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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
374
0
317 803
30
Перейти к ответу Данный вопрос помечен как решенный

Ответы 30

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

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

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

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

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

Выглядит заброшенным ... только альфа-релиз 2006 года :-(

Mauricio Scheffer 12.05.2009 06:25

У меня отлично сработало. Теперь это проект Google Code. Выпущен в июле 2009 года.

User1 09.03.2010 01:48

На странице nProf теперь написано: NProf больше не активно развивается. Если вы ищете профилировщик .NET с открытым исходным кодом, обратите внимание на SlimTune (code.google.com/p/slimtune)

Richard Ev 26.04.2011 21:12

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

Также не удается выполнить хвостовые вызовы :( Сообщенная ошибка.

leppie 16.07.2009 21:44

Это бесплатно только для некоммерческого использования.

Jon Seigel 25.01.2010 17:33

Это было совершенно бесплатно еще в августе 2008 года, когда TrolleFar написал свой ответ. Теперь, как говорит Джон, это бесплатно только для некоммерческого использования.

Richard Flamsholt 22.03.2010 01:41

Оказывается, они снова изменили условия лицензии. Некоторые его части снова бесплатны для коммерческого использования.

TrolleFar 22.04.2010 13:33

По состоянию на февраль 2011 года обычная версия .NET для самостоятельной / коммерческой деятельности является бесплатной. Этот инструмент хорош, потому что он работает на модели клиент / сервер и может профилировать / обходить повторяющиеся границы (например, Native-> COM-> NET-> COM-> NET можно профилировать). Хотя интерфейс ужасен :-)

user166390 03.02.2011 03:56

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

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

Greg Ogle 15.09.2008 04:26

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

Ответ принят как подходящий

Я широко использовал JetBrains dotTrace и Редгейт МУРАВЬИ. Они довольно похожи по характеристикам и цене. Оба они предлагают полезное профилирование производительности и довольно простое профилирование памяти.

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

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

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

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

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

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

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

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

Профилировщик в Visual Studio также очень прост в использовании, Visual Studio 2010 находится в бета-версии и, следовательно, также бесплатен. В 2010 году было несколько улучшений для просмотра конкуренции и параллелизма. попытайся...

Rick 25.09.2009 07:19

@Rick К сожалению, профилировщик Visual Studio отсутствует в Professional Edition ...

Drake 26.10.2009 12:58

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

Ben Robbins 13.01.2010 04:01

Текущие версии профилировщика EQUATEC больше не бесплатны.

David Schmitt 08.02.2010 16:14

Похоже, что EQATEC Profiler снова стал бесплатным для .NET (полная структура)

soren.enemaerke 17.08.2010 23:46

EQATEC Profiler теперь бесплатен для все платформы с некоторыми ограничениями, связанными с DLL: рабочий стол, CF, Silverlight и WP7. Это по-прежнему единственный профилировщик, поддерживающий все платформы .NET 2.0+.

Richard Flamsholt 02.12.2010 18:01

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

scobi 29.06.2011 02:21

Связанный профилировщик CLR - это старая версия, новая - здесь

arolson101 04.11.2011 17:56

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

Roman Starkov 20.11.2011 19:36

Я использую dotTrace с dotMemory (отдельное приложение от JetBrains) и обнаружил, что они всегда доставляют то, что мне нужно. Нет опыта работы с другими, поэтому я не могу сказать, насколько он хорош в сравнении.

David Thielen 04.07.2012 22:21

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

Анализатор производительности Intel® VTune ™ для быстрого отбора проб

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

Sichbo 26.02.2011 04:01

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

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

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

lowglider 20.01.2009 12:00

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

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

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

Jon Skeet 05.03.2009 01:21

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

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

Я говорил о том, что есть в VS2008, но он может быть доступен не во всех версиях (я использую VSTS). Из видеороликов PDC2008 кажется, что профилировщик значительно улучшится в VS2010.

Brian Rasmussen 05.03.2009 01:25

Этот профилировщик доступен только в версиях Visual Studio для Team Systems.

Chris Brandsma 05.03.2009 01:28

Visual Studio Team System (Developer Edition) имеет профилировщик. См. Microsoft.com/visualstudio/en-us/products/teamsystem/…>.

gix 05.03.2009 01:29

В Visual Studio есть профилировщик с VS 2005. Он доступен только в Team System. Собственно, поэтому я использую командную систему (на работе у меня профессионал). На мой взгляд, это очень хороший профайлер.

configurator 05.03.2009 01:34

Это прекрасный профайлер, но он не совсем соответствует стандартам новой версии ANTS.

mqp 09.03.2009 16:38

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

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

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

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

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

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

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

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

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

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

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

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

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

cplotts 15.04.2011 01:50

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

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

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

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

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

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

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

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

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

John Saunders 31.01.2011 07:07

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

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

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

Когда я иду скачать его и попробовать, Telerik хочет, чтобы я «зарегистрировался» и «создал учетную запись». И все эти кнопки подписки на новостную рассылку по умолчанию отмечены флажками. Я был бы счастлив попробовать JustTrace, но только если Telerik усложнит задачу.

Ryan Lundy 20.09.2011 22:32

Спасибо за попытку, Киралесса. Мы знаем, что этот процесс можно улучшить. Мы работаем над этим прямо сейчас. Мы надеемся вскоре устранить эти препятствия. На данный момент просто снимите флажки, и через 2 минуты у вас будет учетная запись и бесплатная загрузка JustTrace. Извините за кратковременные неприятности. -T

Todd 21.09.2011 01:24

отправьте ответ и дайте мне знать, когда я смогу загрузить без создания учетной записи, и я попробую.

Ryan Lundy 27.09.2011 23:56

Обновление: сегодня я смог загрузить, используя ссылку в ответе, без необходимости создавать учетную запись.

Ryan Lundy 01.01.2012 11:02

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

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

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

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

user128300 19.01.2012 19:32

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

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

Другие вопросы по теме