Какие есть хорошие профилировщики .NET?
Вопрос
Какие профилировщики вы использовали при работе с .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 есть простая реализация, которую вы можете использовать в качестве основы.
Анализатор производительности Intel® VTune™ для быстрого отбора проб
Я должен представить вашему вниманию удивительный инструмент, которым я когда-то пользовался. Студия перехватчиков 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/).