Что такое хорошие профилировщики .NET?

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

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

    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 и Profit Profiler Profession

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

    МУРАВЬЕВ

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

    Профайлер профилей Scitech .NET

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

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

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

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

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

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

    Не забывайте, что nProf – префектурный, бесплатный профилировщик.

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

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

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

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

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

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

    Не забывайте, что aweeome scitech .net профайлер памяти

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Анализатор производительности Intel® VTune ™ для быстрой выборки

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

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

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

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

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

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

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

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

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

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

    Мы выбрали YourKit Profiler для .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/)

    Давайте будем гением компьютера.