Каковы некоторые хорошие профилировщики .NET?

Какие профилировщики вы использовали при работе с программами .net, и что бы вы особенно порекомендовали?

6.08.2008 20:14:57
30 ОТВЕТОВ
РЕШЕНИЕ

Я широко использовал JetBrains dotTrace и Redgate ANTS . Они довольно похожи по характеристикам и цене. Они оба предлагают полезное профилирование производительности и довольно простое профилирование памяти.

dotTrace интегрируется с Resharper, что действительно удобно, поскольку вы можете профилировать производительность модульного теста одним щелчком мыши из IDE. Однако часто кажется, что dotTrace дает ложные результаты (например, говоря, что метод занял несколько лет)

Я предпочитаю, чтобы ANTS представлял результаты профилирования. Он показывает вам исходный код и слева от каждой строки указывает, сколько времени потребовалось для запуска. dotTrace просто имеет вид дерева.

Профилировщик EQATEC довольно прост и требует от вас компилирования специальных инструментальных версий ваших сборок, которые затем можно запустить в профилировщике EQATEC. Это, однако, бесплатно.

В целом, я предпочитаю ANTS для профилирования производительности, хотя если вы используете Resharper, то интеграция dotTrace является убийственной функцией и означает, что она превосходит ANTS в удобстве использования.

Бесплатный профилировщик Microsoft CLR ( .Net Framework 2.0 / .Net Framework 4.0 ) - это все, что вам нужно для профилирования памяти .NET.

Обновление 2011:

Профайлер памяти Scitech имеет довольно основной пользовательский интерфейс , но много полезной информации, включая некоторую информацию о неуправляемой памяти, dotTrace и МУРАВЬЕВ недостаток - вы могли бы найти это полезно , если вы делаете COM Interop, но я до сих пор найти профайлер , что делает COM проблемы с памятью, которые легко диагностировать - обычно их приходится решать windbg.exe.

Профилировщик ANTS за последние несколько лет начал стремительно развиваться, и его профилировщик памяти обладает некоторыми действительно полезными функциями, которые теперь, по моим оценкам, выдвинули его впереди dotTrace как пакета. Мне повезло иметь лицензии для обоих, но если вы собираетесь купить один .Net профилировщик для производительности и памяти, сделайте это ANTS.

285
4.01.2012 09:27:44
Профилировщик в Visual Studio также очень прост в использовании, Visual Studio 2010 находится в бета-версии и, следовательно, также является бесплатным. В 2010 году было несколько улучшений для просмотра конкуренции и параллелизма. попробуйте ...
Rick 25.09.2009 03:19:57
@Rick К сожалению, профилировщик Visual Studio отсутствует в Professional Edition ...
Drake 26.10.2009 09:58:18
Я категорически не согласен с тем, что профилировщик CLR - это все, что вам нужно для профилирования памяти в .NET, хотя, возможно, это правда, если вы не придаете значения своему времени. Смотрите мой ответ ниже для резюме лучшей пары профайлеров памяти - они будут помочь вам найти утечки памяти и потенциальные проблемы гораздо быстрее.
Ben Robbins 13.01.2010 01:01:51
Текущие выпуски профилировщика EQUATEC больше не бесплатны.
David Schmitt 8.02.2010 13:14:47
Похоже, EQATEC Profiler снова стал бесплатным для .NET (полный фреймворк)
soren.enemaerke 17.08.2010 19:46:52

Я работал с профайлером RedGate в прошлом. Сделал работу за меня.

2
6.08.2008 20:17:06

Я работал с JetBrains dotTrace для WinForms и консольных приложений (еще не тестировался на ASP.net), и он работает довольно хорошо:

Недавно они также добавили «Персональную лицензию», которая значительно дешевле корпоративной. Тем не менее, если кто-то еще знает более дешевые или даже бесплатные, я бы тоже хотел услышать :-)

9
28.11.2011 13:41:47

ANTS Profiler . Я не использовал много, но на самом деле у меня нет претензий к ANTS. Визуализация действительно полезна.

12
6.08.2008 20:19:00

Не забывайте nProf - отличный, бесплатный профилировщик.

25
23.07.2010 14:40:59
Выглядит как заброшенный ... только альфа-релиз 2006 года :-(
Mauricio Scheffer 12.05.2009 02:25:09
Отлично сработало для меня. Теперь это проект Google Code. Был релиз в июле 2009 года.
User1 8.03.2010 22:48:27
На странице nProf теперь говорится: NProf больше не разрабатывается. Если вы ищете .NET-профилировщик с открытым исходным кодом, взгляните на SlimTune ( code.google.com/p/slimtune )
Richard Ev 26.04.2011 17:12:25

Недавно я обнаружил EQATEC Profiler http://www.eqatec.com/tools/profiler . Он работает с большинством версий .NET и на множестве платформ. Он прост в использовании, и его части бесплатны даже для коммерческого использования.

45
22.04.2010 09:31:37
Сбой на хвостовых звонках тоже :( Сообщено об ошибке.
leppie 16.07.2009 17:44:19
Этот бесплатный только для некоммерческого использования.
Jon Seigel 25.01.2010 14:33:41
Это было совершенно бесплатно в августе 2008 года, когда TrolleFar написал свой ответ. Теперь, как говорит Джон, он бесплатный только для некоммерческого использования.
Richard Flamsholt 21.03.2010 22:41:59
Оказывается, они снова изменили условия лицензии. Части его снова бесплатны для коммерческого использования.
TrolleFar 22.04.2010 09:33:10
Начиная с FEB2011 нормальная версия .NET для самостоятельных / коммерческих целей бесплатна. Этот инструмент хорош тем, что работает на модели клиент / сервер и может профилировать / обходить повторяющиеся границы (например, Native-> COM-> NET-> COM-> NET может быть профилирован). Пользовательский интерфейс довольно ужасен :-)
user166390 3.02.2011 00:56:35

AutomatedQA AQTime для синхронизации и SciTech MemProfiler для памяти.

11
29.08.2008 09:49:56
MemProfiler спас нашу команду, когда произошла утечка памяти. Я пробовал другие инструменты, но ни один другой инструмент не дал такой же детали.
Greg Ogle 15.09.2008 00:26:35

В прошлом я использовал профилировщик, который поставляется с Visual Studio Team System .

3
31.08.2008 05:12:31

К сожалению, большинство профилировщиков, которые я пробовал, не работали при использовании хвостовых вызовов, особенно ANTS. Я просто заканчиваю тем, что пишу свой собственный. На CodeProject есть простая реализация, которую вы можете использовать как основу.

1
19.09.2008 08:38:59
1
19.09.2008 08:48:46
@ utility73 - действительно отличная разбивка стоимости процессора в vtune - это именно то, на что я охотился сегодня. Спасибо, что предложили это.
Sichbo 26.02.2011 01:01:11

Не забывайте удивительный scitech .net профилировщик памяти

Он отлично подходит для отслеживания того, почему вашему приложению .net не хватает памяти.

7
15.10.2008 22:25:20
Очень хороший инструмент. Прост в использовании и позволяет перемещаться по графу объектов. Мне особенно нравится отслеживание памяти в реальном времени. Он показывает вам, как развивается ваш объект во время выполнения приложения.
lowglider 20.01.2009 09:00:38

AQTime разумен, но имеет некоторую кривую обучения и не так прост в использовании, как встроенный в Team Suite

4
4.03.2009 22:19:44

Сам не пробовал, но может быть dotTrace ? Их приложение ReSharper, безусловно, хорошее. Может быть, dotTrace тоже :)

2
4.03.2009 22:19:50
Я использовал dotTrace и могу рекомендовать его.
Jon Skeet 4.03.2009 22:21:07

Я сомневаюсь, что профилировщик, который поставляется с Visual Studio Team System, является лучшим профилировщиком, но я обнаружил, что он достаточно хорош во многих случаях. Что конкретно вам нужно помимо того, что предлагает VS?

РЕДАКТИРОВАТЬ: К сожалению, он доступен только в VS Team System, но если у вас есть доступ к нему, стоит проверить.

2
4.03.2009 22:30:36
Я говорил о том, что в VS2008, но он может быть доступен не во всех версиях (я использую VSTS). Из видеороликов PDC2008 кажется, что профилировщик значительно улучшится в VS2010.
Brian Rasmussen 4.03.2009 22:25:56
Этот профилировщик доступен только в версиях Team Studio для Team Systems.
Chris Brandsma 4.03.2009 22:28:57
Visual Studio Team System (Developer Edition) имеет профилировщик. См. < Microsoft.com/visualstudio/en-us/products/teamsystem/… >.
gix 4.03.2009 22:29:28
Visual Studio имеет профилировщик с VS 2005. Он доступен только с Team System. Вот, собственно, причина, по которой я использую командную систему (на работе у меня есть профессионал). На мой взгляд, это очень хороший профилировщик.
configurator 4.03.2009 22:34:46
Это хороший профилировщик, но он не совсем соответствует стандарту новой версии ANTS.
mqp 9.03.2009 13:38:52

Я считаю, что dotTrace Profiler от JetBrains является отличным инструментом профилирования для .NET, и их режим ASP.NET - это качество.

14
4.03.2009 22:23:30

Я бы добавил, что способность dotTrace различать сессии памяти и трассировки производительности абсолютно неоценима (ANTS также может иметь функцию различий в памяти, но я не видел различий в производительности).

Возможность запустить сеанс профилирования до и после исправления или улучшения ошибки, а затем сравнить результаты невероятно ценно, особенно с гигантским унаследованным приложением .NET (как в моем случае), где производительность никогда не была приоритетом и где можно было бы найти узкие места. ОЧЕНЬ утомительно. Выполнение сравнения до и после позволяет увидеть изменение количества вызовов для каждого метода и изменение продолжительности для каждого метода .

Это полезно не только во время изменения кода, но также и в том случае, если у вас есть приложение, которое использует разные базы данных, скажем, для каждого клиента / клиента. Если один клиент жалуется на медлительность, вы можете запустить сеанс профилирования, используя его базу данных, и сравнить результаты с «быстрой» базой данных, чтобы определить, какие операции способствуют замедлению. Конечно, существует множество инструментов для повышения производительности на стороне базы данных, но иногда я действительно помогаю увидеть показатели производительности со стороны приложения (так как это ближе к тому, что на самом деле видит пользователь).

Итог: dotTrace прекрасно работает, и разница неоценима.

5
7.04.2009 23:29:35

Я нашел много проблем в большом приложении C #, использующем это .

Обычно проблема возникает во время запуска или завершения работы, когда плагины загружаются, а большие структуры данных создаются, уничтожаются, сериализуются или десериализуются. Часто они создаются и инициализируются более одного раза, а обработчики изменений добавляются несколько раз, что еще больше усугубляет проблему.

В подобных случаях программа может быть настолько вялой, что достаточно только 2 выборки, чтобы точно определить виновные сайты вызова метода / функции / свойства.

0
23.05.2017 11:47:01

Последняя версия профилировщика памяти ANTS (думаю, это 5) просто потрясающая !!! Я преследовал утечку, используя WinDbg и SOS, так как это оказалось лучшим способом раньше, затем я попробовал ANTS, и я получил его за несколько минут. Действительно замечательный кусок программного обеспечения.

2
7.07.2009 22:07:10

Другие рассматривали профилирование производительности, но что касается профилирования памяти, в настоящее время я оцениваю Scitech .NET Memory Profiler 3.1 и ANTS Memory Profiler 5.1 (текущие версии на сентябрь 2009 г.). Я пробовал JetBrains один год или два назад, и он был не так хорош, как ANTS (для профилирования памяти), поэтому я не потрудился на этот раз. При чтении веб-сайтов кажется, что у него нет тех же функций профилирования памяти, что и у двух других.

Как ANTS, так и профилировщик памяти Scitech имеют функции, которых нет у другого, поэтому выбор будет зависеть от ваших предпочтений. Вообще говоря, Scitech предоставляет более подробную информацию, в то время как ANTS действительно невероятно распознает протекающий объект. В целом, я предпочитаю ANTS, потому что он очень быстро выявляет возможные утечки.

Вот основные плюсы и минусы каждого из моего опыта:

Общие черты ANTS и Scitech .NET Memory Profiler

  • Функция анализа в реальном времени
  • Отличное практическое видео на своих сайтах
  • Легко использовать
  • Разумная производительность (очевидно, медленнее, чем без прикрепленного профилировщика, но не настолько, чтобы вы разочаровались)
  • Показать случаи утечки объектов
  • В основном они оба делают работу довольно хорошо

МУРАВЬЕВ

  • Фильтры в один клик для поиска распространенных утечек, в том числе: объекты, поддерживаемые только обработчиками событий, объекты, которые удаляются, но все еще живут, и объекты, которые поддерживаются только ссылкой из удаленного объекта. Вероятно, это убийственная особенность ANTS - из-за этого обнаружение утечек невероятно быстро. По моему опыту, большинство утечек вызвано тем, что обработчики событий не отцепляются, и ANTS просто ведет вас прямо к этим объектам. Потрясающие.
  • График удержания объекта. Хотя та же информация доступна в Scitech, в ANTS ее гораздо проще интерпретировать.
  • Показывает размер с дочерними элементами в дополнение к размеру самого объекта (но только когда, к сожалению, выбран экземпляр, а не в общем списке классов).
  • Лучшая интеграция с Visual Studio (щелкните правой кнопкой мыши на графике, чтобы перейти к файлу)

Scitech .NET Memory Profiler

  • Показывает трассировку стека, когда объект был выделен. Это действительно полезно для объектов, которые расположены в разных местах. С помощью ANTS трудно точно определить, где был создан протекший объект.
  • Показывает количество одноразовых предметов, которые не были утилизированы. Хотя это и не указывает на утечку, оно идентифицирует возможности для устранения этой проблемы и повышения производительности вашего приложения в результате более быстрого сбора мусора.
  • Более подробные параметры фильтрации (несколько столбцов могут быть отфильтрованы независимо).
  • Представляет информацию о всех созданных объектах (включая мусор). ANTS показывает только «живую» статистику объекта. Это облегчает анализ и настройку общей производительности приложения (например, определить, где много ненужных объектов, которые не обязательно протекают).

Вкратце, я думаю, что ANTS поможет вам быстрее найти утечку, в то время как Scitech предоставит вам немного больше информации об общей производительности памяти вашего приложения и отдельных объектах, как только вы узнаете, что нужно посмотреть (например, отслеживание стека при создании). Если бы в ANTS была добавлена ​​трассировка стека и отслеживание неразмещенных одноразовых объектов, я бы не увидел необходимости использовать что-либо еще.

88
25.09.2009 03:16:32
Версия 4.0 .NET Memory Profiler (теперь в предварительном просмотре) теперь имеет графическое представление. Эта функция мне понравилась в профайлере ANTS, которой у Scitech не было (в 3.1 / 3.5).
cplotts 14.04.2011 21:50:10

Текущая версия SharpDevelop (3.1.1) имеет хороший встроенный профилировщик. Он довольно быстрый и очень хорошо интегрируется в IDE SharpDevelop и его бегунок NUnit. Результаты отображаются в гибком стиле дерева / списка (используйте LINQ, чтобы создать свой собственный выбор). Двойной щелчок по отображаемому методу переходит прямо в исходный код.

3
21.06.2010 11:10:50

Я должен принести вам удивительный инструмент, который я использовал некоторое время назад. AVICode Interceptor Studio . В моей предыдущей компании мы использовали этот замечательный инструмент для профилирования веб-приложения ( Предполагается, что это единственное крупнейшее веб-приложение в мире и крупнейший гражданский ИТ-проект, когда-либо сделанный ). Команда исполнителей творила чудеса с помощью этого великолепного инструмента. Настроить его сложно, но это разовое занятие, и я бы сказал, что оно того стоит. Оформить заказ на этой странице для деталей.

Спасибо Джеймс

1
16.03.2010 21:07:33

Я хотел бы добавить yourkit java и .net profiler, я люблю его для Java, хотя еще не пробовал .NET-версию.

2
15.06.2010 09:56:31

Для меня SpeedTrace - лучший инструмент на рынке, потому что он помогает не только найти узкие места в ваших приложениях. Это также помогает вам в сценариях устранения неполадок выяснить, почему ваше приложение зависало, ваша установка не была установлена, ваше приложение зависло, производительность вашего приложения иногда низкая в зависимости от ввода данных, например, для выявления медленных транзакций БД.

1
7.08.2010 11:31:45

Если вы ищете что-то быстрое, простое и бесплатное, http://code.google.com/p/slimtune/, похоже, отлично справится с этой задачей.

11
29.12.2010 20:04:40

Профилировщик NuMega True Time работает в DevPartner Studio от Micro Focus. Он обеспечивает детализацию на уровне строк и методов для приложений .NET, требующих только PDB, не требующих источника (но это помогает.). Он может отличить алгоритмически тяжелые подпрограммы от тех, которые требуют длительного ввода-вывода, используя наш собственный драйвер синхронизации режима ядра для каждого потока. Версия 10.5 поставляется с новой поддержкой 64 процессов 4 февраля 2011 года. Бесстыдный плагин: я работаю над линейкой продуктов DevPartner. Следите за новостями о запуске 10.5 на http://www.DevPartner.com .

Отказ от ответственности: я менеджер по продукту DevPartner в Micro Focus.

1
13.02.2012 16:23:14
добро пожаловать в ТАК. Вам нужно будет сообщать о любых отношениях с DevPartner, иначе вы будете считаться спамером и рассматриваться как таковой. Я вижу, вы ответили на ряд вопросов по профилированию ...
John Saunders 31.01.2011 04:07:51

[ Полное раскрытие ]

Хотя он еще не настолько полнофункциональный, как некоторые другие профилировщики памяти .NET, перечисленные здесь, на рынке появилась новая запись под названием JustTrace . Он сделан Telerik, и его основная цель - сделать трассировку / профилирование проще и быстрее для всех типов приложений (веб / Silverlight / рабочий стол).

Если вы когда-либо находили профилирование и оптимизацию пугающими или медленными с другими инструментами, тогда стоит взглянуть на JustTrace .

31
23.05.2017 12:02:27
Когда я иду скачать его и попробовать, Telerik хочет, чтобы я «зарегистрировался» и «создал учетную запись». И все эти кнопки подписки на рассылку помечены по умолчанию. Я был бы рад попробовать JustTrace, но не тогда, когда Telerik сделает это так сложно.
Ryan Lundy 20.09.2011 18:32:25
Спасибо за попытку, Киралесса. Мы знаем, что этот процесс можно улучшить. Мы работаем над этим прямо сейчас. Мы надеемся устранить эти препятствия в ближайшее время. Пока просто снимите флажки и через 2 минуты вы сможете завести аккаунт и бесплатно скачать JustTrace. Извините за кратковременные неприятности. -T
Todd 20.09.2011 21:24:04
отправьте обратно и дайте мне знать, когда я могу скачать без создания учетной записи, и я попробую.
Ryan Lundy 27.09.2011 19:56:55
Обновление: сегодня мне удалось скачать по ссылке в ответе без необходимости создавать аккаунт.
Ryan Lundy 1.01.2012 07:02:37

Недавно я тестировал JustTrace от Telerik, и хотя он далеко от готового продукта, ребята идут в правильном направлении.

1
2.09.2011 13:05:29

Мы выбрали YourKit Profiler для .NET в моей компании, так как это было лучшее соотношение цены и качества. Для небольшой компании, которая хочет иметь гибкое лицензирование (плавающие лицензии), это был идеальный выбор - в то время ANTS была медальоном для разработчиков.

Кроме того, он предоставил нам возможность присоединиться к запущенному процессу, что было невозможно с dotTrace. Однако следует помнить, что присоединение - не лучший вариант, так как все .NET будет тормозить, но это был единственный способ профилировать приложения .NET, запущенные другими процессами. С точки зрения функциональности ANTS и dotTrace были лучше, но в конце концов YourKit был достаточно хорош.

0
9.01.2012 16:12:17
Начиная с января 2012 года, YourKit повысил цены на профилировщик YourKit. Следовательно, ценовое преимущество может быть недействительным.
user128300 19.01.2012 15:32:15

Если лицензирование является проблемой, вы можете попробовать WINDBG для профилирования памяти

1
2.02.2012 17:55:45

Если вы используете ASP.NET MVC, вы можете попробовать MVCMiniProfiler (http://benjii.me/2011/07/using-the-mvc-mini-profiler-with-entity-framework/)

0
13.03.2012 14:41:04