Я пишу плагин для другой программы на C# .NET, и у меня проблемы с производительностью, когда команды занимают намного больше времени, чем я. Плагин реагирует на события в главной программе, а также зависит от методов утилиты SDK хост-программы. У моего плагина много рекурсивных функций, потому что я много читаю и записываю в древовидную структуру. Кроме того, у меня есть много подписчиков на события между моим плагином и хост-приложением, а также подписки на события между классами в моем подключаемом модуле.Каков наилучший способ отладить проблемы с производительностью?
Как я могу выяснить, что требуется для завершения задачи? Я не могу использовать обычную отладку стиля точки останова, потому что дело не в том, что она не работает, просто потому, что она слишком медленная. Я установил статический класс «LogWriter», который я могу ссылаться со всех моих классов, что позволит мне записывать временные строки в файл журнала из моего кода. Есть ли другой способ? Визуальная студия хранит какой-то временный журнал, который я мог бы использовать вместо этого? Есть ли способ просмотреть стек вызовов после закрытия приложения?
Red Gate наверняка делает хорошее программное обеспечение. На мой взгляд, их профилировщик ANTS является одним из лучших. Я считаю, вы можете скачать пробную версию. Большинство людей, которые впоследствии покупают настоящую версию, так что будьте осторожны :). – bastijn
Ну, профилировщик Microsoft тоже хорош, но он включен только в дорогие пакеты VS. – arbiter
Thumbs up for ANTS от меня тоже, разрешил огромную утечку памяти для меня –