Вопрос

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

Это было полезно?

Решение

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

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

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

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

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

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

Обновление 2011 года:

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

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

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

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

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

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

Общие функции ANTS и профилировщика памяти Scitech .NET

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

МУРАВЬИ

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

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

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

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

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

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

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

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

Не забывай нПроф - очень хороший бесплатный профайлер.

я нашел Профилировщик dotTrace к JetBrains быть отличным инструментом профилирования для .NET, а их режим ASP.NET — это качество.

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

АвтоматизированныйQA AQTime для выбора времени и SciTech MemProfiler на память.

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

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

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

Не забывайте об удивительных научных технологиях профилировщик памяти .net

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

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

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

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

Нижняя граница:dotTrace прекрасно работает, а разница бесценна.

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

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

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

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

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

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

РЕДАКТИРОВАТЬ:К сожалению, он доступен только в VS Team System, но если у вас есть к нему доступ, стоит попробовать.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top