Инструменты профилирования .NET

Возможный дубликат:
Какие хорошие профили .NET?

Я ищу хорошие инструменты для профилирования памяти .NET CLR.

Моим ключевым требованием является то, что он будет хорошо работать с IIS и отдельными приложениями CLR. В идеале я бы увидел, какие объекты выделены, где они выделены и какой размер они являются?

Есть ли у кого-нибудь хороший опыт с конкретным инструментом, который вы с удовольствием порекомендуете?

Ответ 1

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

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

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

Общие функции ANTS и Profit Profession.NET Scitech

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

Муравьи

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

Scitech.NET Memory Profiler

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

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

Ответ 2

Странно, что CLR Profiler здесь не упоминается. Это бесплатно и хорошо работает.

Остерегайтесь нескольких старых версий, доступных на собственном сайте Microsoft. По состоянию на ноябрь 2011 года последняя версия выглядит следующим образом: последняя версия (альтернативная ссылка)

Ответ 3

Если вы чувствуете себя в отчаянии, вы можете использовать WinDbg с библиотека Son-of-Strike (SOS.DLL), которая поставляется с картой .Net.

Ответ 5

. Чистая память Profiler помогла мне многое в моем предыдущем проекте. Это не бесплатно, но это очень хорошо.

.NET Memory Profiler - мощный инструмент для обнаружения утечек памяти и оптимизация использования памяти в программы, написанные на С#, VB.NET или любой другой язык .NET.

Ответ 6

I второй ANTI-профилировщик.

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

И мне нравятся баги прогресса litle, тонущие на строках кода, которые слишком долго выполняются.

Ответ 7

В настоящее время я использую ANTI Profiler. Это очень хороший инструмент со многими опциями профилирования подробностей и хорошо работает с автономными приложениями, сервером разработки и IIS.

Ответ 8

Поскольку все перечисляющие доступные инструменты, я думал, что я укажу вам полный список профилировщиков для .NET: http://sharptoolbox.com/categories/profilers-debuggers

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

Ответ 9

Я использовал Aqtime с большим успехом на протяжении многих лет. Я пробовал ANTS и другие, но вернулся в Aqtime, так как я также занимаюсь разработкой неуправляемого кода.