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


83

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

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

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



Это много говорит о SO, что причина для цензуры вопроса заключается в том, что он «вероятно вызовет дискуссию».
— Гленн Мейнард

Ответы:


35

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

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

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


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 #. Он действительно работал очень хорошо с такой ценой и даже превосходил некоторых более дорогих конкурентов.

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


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

32

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


Не бесплатно для коммерческой лицензии (но все же дешево, 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 была впечатляющей. Только не беспокойтесь о профилировщике памяти, если только вы не имеете дело с тривиальным (небольшим) приложением.


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

4

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


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

3

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


2

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

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



2

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


2

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


1

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


не могли бы вы подробнее рассказать обо всем, что касается MVP? спасибо,
— kay.one

MVP получают лицензию на продукты Redgate бесплатно, это лазейка, в которую вы попадете, если в вашей команде есть люди, которые являются MVP, поэтому стоимость не проблема.
— DevelopingChris

У вас есть ссылка, описывающая эту лазейку и способы ее использования?
— Кейт Сирмонс,

1

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



0

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


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

0

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.