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

356

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

Теги:
profiling
profiler

30 ответов

299
Лучший ответ

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

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

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

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

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

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

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

Профилер памяти Scitech имеет довольно простой интерфейс, но много полезной информации, включая некоторую информацию о неуправляемой памяти, которой нет dotTrace и ANTS - вы может оказаться полезным, если вы выполняете COM-взаимодействие, но мне еще не найти какой-либо профилировщик, который затрудняет диагностику проблем с памятью COM - вам обычно приходится вырываться windbg.exe.

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

  • 5
    Профилировщик в Visual Studio также очень прост в использовании, Visual Studio 2010 находится в бета-версии и, следовательно, также является бесплатным. В 2010 году было несколько улучшений для просмотра конкуренции и параллелизма. попытайся...
  • 15
    @Rick К сожалению, профилировщик Visual Studio отсутствует в Professional Edition ...
Показать ещё 8 комментариев
88

Другие рассмотрели профилирование производительности, но в отношении профилирования памяти В настоящее время я оцениваю как Scitech.NET Memory Profiler 3.1, так и ANTS Memory Profiler 5.1 (текущие версии по состоянию на сентябрь 2009 года). Я пробовал 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 была добавлена ​​трассировка стека и отслеживание несвязанных одноразовых объектов, я бы не видел необходимости использовать что-либо еще.

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

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

  • 0
    Не срабатывает и при последних вызовах :( Сообщено об ошибке.
  • 3
    Только профильные методы к сожалению.
Показать ещё 5 комментариев
31

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

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

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

  • 12
    Когда я иду загрузить его и попробовать, Telerik хочет, чтобы я «зарегистрировался» и «создал учетную запись». И все эти кнопки подписки на рассылку помечены по умолчанию. Я был бы рад попробовать JustTrace, но не если Telerik сделает это так сложно.
  • 1
    Спасибо за попытку, Киралесса. Мы знаем, что этот процесс можно улучшить. Мы работаем над этим прямо сейчас. Мы надеемся устранить эти препятствия в ближайшее время. Пока просто снимите флажки и через 2 минуты вы сможете завести аккаунт и бесплатно скачать JustTrace. Извините за кратковременные неприятности. -T
Показать ещё 2 комментария
26

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

  • 3
    Выглядит как заброшенный ... только альфа-релиз 2006 года :-(
  • 2
    Отлично сработало для меня. Теперь это проект Google Code. Был релиз в июле 2009 года.
Показать ещё 1 комментарий
14

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

12

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

11

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

11

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

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

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

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

7

Не забывайте, что aweeome scitech . Профайлер сети памяти

Это отлично подходит для отслеживания того, почему в вашем .net-приложении заканчивается память.

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

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

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

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

Нижняя строка: dotTrace отлично работает, и diff неоценим.

4

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

3

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

3

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

2

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

2

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

2

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

  • 1
    Я использовал dotTrace и могу рекомендовать его.
2

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

EDIT: К сожалению, он доступен только в VS Team System, но если у вас есть доступ к этому, стоит проверить.

  • 0
    Вы имеете в виду vs2010? В vs2008 я не видел профилировщик.
  • 0
    Визуальная студия имеет профилировщик?
Показать ещё 7 комментариев
2

Я работал с профилировщиком RedGate в прошлом. Работала для меня.

1

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

1

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

1

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

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

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

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

1

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

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

1
  • 0
    @ utility73 - действительно отличная разбивка стоимости процессора в vtune - это именно то, на что я охотился сегодня. Спасибо, что предложили это.
1

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

0

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

0

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

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

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

Я нашел много проблем в большом приложении С#, используя .

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню