Что Такое Некоторые Good.NET Профилировщики?


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

30 374

30 ответов:

я использовал JetBrains dotTrace и муравьи Редгейт широко. Они довольно схожи по характеристикам и цене. Они оба предлагают полезное профилирование производительности и довольно простое профилирование памяти.

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

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

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

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

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

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

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

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

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

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

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

общий Особенности муравьев и Scitech .NET Memory Profiler

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

муравьев

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

Scitech .NET Профилировщик Памяти

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

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

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

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

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

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

Не забудьте nProf - это хорошо втирают, бесплатная профайлера.

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

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

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

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

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

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

Не забудьте удивительный scitech .net Memory profiler

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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