Я ищу профилировщик для моего приложения C #, разрабатываемого в Visual Studio 2008. Я ищу что-то недорогое (предпочтительно с открытым исходным кодом) и которое можно интегрировать в VS2008. Я нашел Visual Studio Profiler, но не знать, как его использовать. Я установил автономную версию, которая зависит от Visual Studio (не для автономной работы, я думаю?), но в меню «Инструменты» ничего никогда не появляется, как говорится в их прохождении.
Где я могу найти профилировщик приложений C# для использования в Visual Studio 2008?
Ответы (8)
Вот список профайлеров .Net с открытым исходным кодом.
Я использовал и мне нравится Ants-Profiler от Red Gate, но он стоит денег (очень того стоит, ИМХО).
Visual Studio Profiler является частью только Team System. Он не входит в состав Visual Studio Professional.
Существует бесплатный профилировщик .NET под названием nprof, но он еще не выпущен и может изменчивый. Кроме того, есть отличные коммерческие профилировщики, такие как ANTS Profiler от Red Gate. ; однако это не низкая стоимость.
Воспользуйтесь профилировщиком EQATEC, бесплатным и хорошо работающим. Также работает для ASP.NET и .NET CF.
Я рекомендую dotTrace. Не бесплатно, цена 170 евро за персональную лицензию.
http://www.jetbrains.com/profiler/index.html
Если вы просто хотите выполнить профилирование памяти, отлично подойдет профилировщик памяти .NET. У него есть пробный период и небольшая стоимость после этого — оно того стоит. Если вы хотите потратить немного денег, DevPartner Studio очень хороша.
В этой ветке stackoverflow обсуждаются профилировщики для .NET. Я использовал профилировщик CLR некоторые, и это помогло мне решить несколько проблем с производительностью в программном обеспечении. Может стоит попробовать. Microsoft опубликовала руководство по использованию CLR Profiler.
Для настройки производительности, в отличие от диагностики памяти, есть простой способ.
Это нелогично, но все, что вам нужно сделать, это запустить программу в среде IDE и, пока она работает медленно, приостановить ее несколько раз, изучив стек вызовов, чтобы понять, почему она делает то, что делает. Велика вероятность, что несколько образцов покажут, что он делает что-то, что вы могли бы исключить. Сэкономленное время примерно равно доле образцов, содержащих исправленный код.
Это «быстро и грязно», но, в отличие от большинства профилировщиков, он точно определяет фактические операторы, требующие внимания, а не только содержащие их функции. Это также дает приблизительную оценку ускорения, которое вы можете ожидать, исправив их. Его не смущает рекурсия, и он позволяет избежать трудности с деревом вызовов, когда проблема может быть небольшой в любой ветви, но может быть большой, если она распределена по многим ответвлениям.
Я беру несколько сэмплов N, обычно не более 20. Если где-то в середине стека есть горячая точка или мошеннический вызов метода, занимающий какую-то долю F времени выполнения, то количество сэмплов, которые это покажут, равно NF +- sqrt (NF (1-F). Например, если N = 20 и F = 0,15, количество выборок, которые покажут это, равно 3 +- 1,6, поэтому у меня есть отличные шансы найти его.
Часто F больше похож на 0,5, поэтому количество образцов, показывающих его, составляет 10 +- 2,2, поэтому его нельзя пропустить.
Обратите внимание, что это никак не связано с тем, насколько быстр код или как часто он выполняется. Если его оптимизация сэкономит вам определенный процент времени, это определяет, какой процент образцов будет отображать его для вас.
Обычно есть несколько мест для оптимизации. Если в задаче 1 F1=0,5, а в задаче 2 F2 = 0,1, то при устранении проблемы 1 (удвоении скорости работы программы) F2 обычно увеличивается на этот коэффициент, до 0,2. Таким образом, вы можете сделать это снова и быть уверенным, что найдете проблему 2. Таким образом, вы можете сбить последовательность проблем, пока код не станет практически оптимальным.