Есть ли достойные профилировщики C #? [закрыто]

83

Мне нужен профилировщик C #.

Хотя я не прочь заплатить за один, что-то бесплатное или, по крайней мере, с пробной версией было бы идеальным, поскольку для создания заказа на покупку требуется время.

Какие-нибудь рекомендации?

Гарет Симпсон
источник
5
возможный дубликат « Каких хороших профилировщиков .NET»?
BlueRaja - Danny Pflughoeft
Это много говорит о SO, что причина для цензуры вопроса заключается в том, что он «вероятно вызовет дискуссию».
Гленн Мейнард

Ответы:

35

Вы можете попробовать следующее:

  • nprof (бесплатный, но старый)
  • ProfileSharp (открытый исходный код)
  • .Net Memory Profiler (действительно хорош для утечек памяти, есть пробная версия)

Изменить: Nprof был заменен на SlimTune и работает с приложениями .Net 4.0

jfs
источник
7
Я играл с ProfileSharp. Это абсолютно ужасно.
Мэтью Растон,
1
nprof - это только я думаю .Net 1.1. Если вы можете скомпилировать в .Net 1.1, может быть полезно профилировать его, а затем перекомпилировать в .Net 2 для выпуска. Однако это невозможно, если вы начнете использовать функции .Net2, такие как универсальные типы и типы, допускающие значение NULL.
redcalx
1
Согласитесь с Мэтью, ProfileSharp ужасен, не мог заставить его профилировать даже самый простой exe из командной строки. Не тратьте время зря
Майкл Даусманн,
Похоже, что в последнее время разработка nprof началась.
Брайан Ортис,
1
Я использовал .Net Memory Profiler, чтобы найти утечку памяти; это очень хорошо. Это моя печать одобрения!
Кот-Сайлон,
40

Полтора года назад я использовал профилировщик Ants в большом проекте на C #. Он действительно работал очень хорошо с такой ценой и даже превосходил некоторых более дорогих конкурентов.

Он рассчитывает стоимость практически с построчным разрешением.

AdamSane
источник
1
Мне тоже нравятся муравьи. Это из Редгейта.
Марсель
32

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

HullCityСтив
источник
Не бесплатно для коммерческой лицензии (но все же дешево, 200 долларов).
mhenry1384
Да, похоже, они изменили лицензию на последнюю версию и начали взимать плату за коммерческое использование. Я все равно очень рекомендую это.
HullCitySteve
3
Обновление - похоже, они снова изменили условия лицензии, чтобы сделать его бесплатным для коммерческого использования для стандартных приложений .NET (но не для CF или Silverlight)
HullCitySteve
3
Условия лицензии снова изменились в версии 3.6: теперь она бесплатна для всех платформ, включая CF и Silverlight, с ограничением на количество DLL, которые можно инструментировать за один сеанс.
Ричард Фламсхольт, 02
3
Больше не является бесплатным и был куплен Telerik :(
pingoo
29

dotTrace от JetBrains широко используется.

Удивительный NDepend Патрика Смаччиа отлично подходит для статического анализа.

Леон Бамбрик
источник
1
dotTrace действительно отличный профилировщик, чрезвычайно простой в использовании.
Стефан Монов
dotTrace 3.1 не работает с .NET 4. Нам нужно дождаться dotTrace 4.0.
Бобби Кэннон,
1
В качестве обновления и dotTrace 4 Performance, и dotTrace 3.5 Memory поддерживают .NET 4.
Юра Гороховски,
11

Я поддерживаю полный список профилировщиков для .NET на SharpToolbox.com.

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

Фабрис
источник
Это кажется устаревшим (записи Redgate довольно устарели)
Эндрю Гарри
Гарри, спасибо, что указали на это. Информация обо всех продуктах RedGate теперь актуальна. Sharptoolbox.com/authors/red-gate-software
Фабрис
7

Интересно, что никто не упоминает о том, что он есть в старших версиях Visual Studio - я всегда считал, что этого достаточно для профилирования выполнения. Для профилирования памяти я использую Memory Profiler, о котором уже упоминалось, но это не то, что я обычно называю «профилировщиком».

Какого рода профилирование вы пытались выполнить?

Уилл Дин
источник
6

Мы используем .NET Memory Profiler . Это некрасиво, но очень полезно для поиска висячих ссылок.

Изначально я попробовал профайлер ANTS от Red Gate, который очень привлекателен, но с точки зрения утечки памяти он отстой по следующим причинам:

1) Это до смешного медленно. На то, чтобы приложение перешло в состояние для начала записи, ушло полчаса (без красных ворот это занимает 20 секунд).

2) Red Gate необходимо запускать собственный инструмент на собственном инструменте. К тому моменту, когда я сделал два снимка, он использовал 900 МБ памяти! Затем он разбился :(

Однако временная составляющая Red Gate ANTS была впечатляющей. Только не беспокойтесь о профилировщике памяти, если только вы не имеете дело с тривиальным (небольшим) приложением.

Craigger
источник
2
Вы пробовали v4 обоих? Теперь все намного лучше :)
thecoop
4

Я использовал AQtime, и он меня ни разу не подводил. Я уверен, что есть пробная версия.

отметка
источник
AQTime имеет огромное преимущество перед ANT в том, что он поддерживает неуправляемый код.
Рик Минерих
3

Я буду вторым профайлером ANTS Red Gate . Я использовал его, чтобы отследить некоторые действительно тревожные проблемы с производительностью, и он был чрезвычайно простым в использовании (низкая кривая обучения) и предоставлял хорошие, подробные данные таким образом, чтобы их было легко понять. Ценник того стоит, но не бесплатно ...

Джейсон Сундрам
источник
2

Удивительный NDepend Патрика Смаччиа отлично подходит для статического анализа.

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

Lomaxx
источник
2

Мне повезло с профилировщиком памяти .NET

Врач
источник
2

Профайлер EQATEC сделал здесь свою работу.


источник
2

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

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

В настоящее время не пользуюсь ими, мой приятель восторженно отзывается о профайлере Ants. Я знаю, что это платный продукт, не уверен, насколько он дорог. Если у вас есть MVP, вы можете воспользоваться этим, чтобы получить бесплатную лицензию.

РазработкаChris
источник
не могли бы вы подробнее рассказать обо всем, что касается MVP? спасибо,
kay.one
MVP получают лицензию на продукты Redgate бесплатно, это лазейка, в которую вы попадете, если в вашей команде есть люди, которые являются MVP, поэтому стоимость не проблема.
DevelopingChris
У вас есть ссылка, описывающая эту лазейку и способы ее использования?
Кейт Сирмонс,
1

AQTime (и перфоманс, и память) или ANTS (профилировщик производительности v4 или бета-профилировщик памяти v5) здесь.

Миха Маркич
источник
0

Вчера я нашел .NET Memory Profiler и должен сказать, что он меня очень впечатлил.
Я собираюсь заказать лицензию сегодня.

Патрик Свенссон
источник
0

Профилировщик, включенный в некоторые версии Visual Studio, не очень хорошо справляется с профилированием использования памяти, но очень хорошо справляется со скоростью выполнения профилирования.

Мета-Рыцарь
источник
Один из способов доступа к профилировщику VS2010 - после загрузки решения в меню «Отладка» найти «Начать анализ производительности». Подробная информация о его возможностях находится на msdn.microsoft.com/query/…
ShawnFeatherly,
0

Какая у тебя цель?

Ваша цель - найти определенные операторы и получить приблизительное представление о том, какой вклад они вносят в общее время выполнения, чтобы вы могли найти способы сделать их по-другому?

В этом я клянусь этим методом.

Майк Данлэйви
источник