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

374

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

ricree
источник

Ответы:

285

Я широко использовал 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.

Мэтт Хауэллс
источник
5
Профилировщик в Visual Studio также очень прост в использовании, Visual Studio 2010 находится в бета-версии и, следовательно, также является бесплатным. В 2010 году было несколько улучшений для просмотра конкуренции и параллелизма. попробуйте ...
Рик
15
@Rick К сожалению, профилировщик Visual Studio отсутствует в Professional Edition ...
Дрейк
Я категорически не согласен с тем, что профилировщик CLR - это все, что вам нужно для профилирования памяти в .NET, хотя, возможно, это правда, если вы не придаете значения своему времени. Смотрите мой ответ ниже для резюме лучшей пары профайлеров памяти - они будут помочь вам найти утечки памяти и потенциальные проблемы гораздо быстрее.
Бен Роббинс
1
Текущие выпуски профилировщика EQUATEC больше не являются бесплатными.
Дэвид Шмитт
1
Похоже, EQATEC Profiler снова стал бесплатным для .NET (полный фреймворк)
soren.enemaerke
88

Другие рассматривали профилирование производительности, но что касается профилирования памяти, я в настоящее время оцениваю 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 была добавлена ​​трассировка стека и отслеживание неразмещенных одноразовых объектов, я бы не увидел необходимости использовать что-либо еще.

Бен Роббинс
источник
Версия 4.0 .NET Memory Profiler (теперь в предварительном просмотре) теперь имеет графическое представление. Это была единственная функция, которая мне понравилась в профайлере ANTS, которой у Scitech не было (в 3.1 / 3.5).
cplotts
45

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

TrolleFar
источник
Сбой на хвостовых вызовах тоже :( Сообщено об ошибке.
Leppie
Этот бесплатный только для некоммерческого использования.
Джон Зигель
7
Это было совершенно бесплатно в августе 2008 года, когда TrolleFar написал свой ответ. Теперь, как говорит Джон, он бесплатный только для некоммерческого использования.
Ричард Фламшолт
8
Оказывается, они снова изменили условия лицензии. Части его снова бесплатны для коммерческого использования.
TrolleFar
Начиная с FEB2011 нормальная версия .NET для самостоятельных / коммерческих целей бесплатна. Этот инструмент хорош тем, что работает на модели клиент / сервер и может профилировать / обходить повторяющиеся границы (например, Native-> COM-> NET-> COM-> NET может быть профилирован). Пользовательский интерфейс довольно ужасен :-)
31

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

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

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

Тодд
источник
12
Когда я иду скачать его и попробовать, Telerik хочет, чтобы я «зарегистрировался» и «создал учетную запись». И все эти кнопки подписки на рассылку помечены по умолчанию. Я был бы рад попробовать JustTrace, но не если Telerik сделает это так сложно.
Райан Ланди
1
Спасибо за попытку, Киралесса. Мы знаем, что этот процесс можно улучшить. Мы работаем над этим прямо сейчас. Мы надеемся устранить эти препятствия в ближайшее время. Пока просто снимите флажки и через 2 минуты вы сможете завести аккаунт и бесплатно скачать JustTrace. Извините за кратковременные неприятности. -T
Тодд
9
напишите обратно и дайте мне знать, когда я могу скачать без создания учетной записи, и я попробую.
Райан Ланди
4
Обновление: сегодня мне удалось скачать по ссылке в ответе без необходимости создавать аккаунт.
Райан Ланди
25

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

Greg Hurlman
источник
3
Выглядит как заброшенный ... только альфа-релиз 2006 года :-(
Маурисио Шеффер
2
Отлично сработало для меня. Теперь это проект Google Code. Был релиз в июле 2009 года.
User1
19
Страница nProf теперь заявляет: NProf больше не разрабатывается активно. Если вы ищете .NET-профилировщик с открытым исходным кодом, взгляните на SlimTune ( code.google.com/p/slimtune )
Ричард Эв,
14

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

Крис Балланс
источник
12

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

palmsey
источник
11

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

Ларс Труйенс
источник
MemProfiler спас нашу команду, когда произошла утечка памяти. Я пробовал другие инструменты, но ни один другой инструмент не дал такой же детали.
Грег Огл
9

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

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

Michael Stum
источник
7

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

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

Сэм Шафран
источник
1
Очень хороший инструмент. Прост в использовании и позволяет перемещаться по графу объектов. Мне особенно нравится отслеживание памяти в реальном времени. Он показывает вам, как развивается ваш объект во время выполнения приложения.
Lowglider
5

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

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

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

Итог: dotTrace отлично работает, и разница неоценима.

shaunmartin
источник
4

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

Джефф Мозер
источник
3

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

Дэвид Шмитт
источник
2

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

Кев
источник
2

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

Svish
источник
1
Я использовал dotTrace и могу рекомендовать его.
Джон Скит
2

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

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

Брайан Расмуссен
источник
1
Я говорил о том, что в VS2008, но он может быть доступен не во всех версиях (я использую VSTS). Из видеороликов PDC2008 кажется, что профилировщик значительно улучшится в VS2010.
Брайан Расмуссен
1
Этот профилировщик доступен только в версиях Visual Studio для Team Systems.
Крис Брандсма
Visual Studio Team System (Developer Edition) имеет профилировщик. См. < Microsoft.com/visualstudio/en-us/products/teamsystem/… >.
gix
Visual Studio имеет профилировщик с VS 2005. Он доступен только с Team System. Вот, собственно, причина, по которой я использую командную систему (на работе у меня есть профессионал). На мой взгляд, это очень хороший профилировщик.
конфигуратор
Это хороший профилировщик, но он не совсем соответствует стандарту новой версии ANTS.
Mqp
2

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

Пабло
источник
2

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

RedLab
источник
1

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

leppie
источник
1

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

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

Джеймс Полус
источник
1

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

кортик
источник
1

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

Иван Петров
источник
1

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

флюиды
источник
1

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

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

Мэтт Шютце
источник
добро пожаловать в ТАК. Вам нужно будет сообщать о любых отношениях с DevPartner, иначе вы будете считаться спамером и рассматриваться как таковой. Я вижу, вы ответили на ряд вопросов по профилированию ...
Джон Сондерс
0

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

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

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

оборота Майк Данлавей
источник
0

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

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

Слободан Савкович
источник
Начиная с января 2012 года, YourKit повысил цены на профилировщик YourKit. Следовательно, ценовое преимущество может быть недействительным.
0

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

eka808
источник