Ответы:
Я широко использовал 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 и МУРАВЬЕВ недостаток - вы могли бы найти это полезно , если вы делаете COM Interop, но я до сих пор найти профайлер , что делает 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 Memory Profiler
МУРАВЬЕВ
Scitech .NET Memory Profiler
Подводя итог, я думаю, что ANTS поможет вам быстрее найти утечку, в то время как Scitech предоставит немного больше информации об общей производительности памяти вашего приложения и отдельных объектах, как только вы узнаете, на что обращать внимание (например, отслеживание стека при создании). Если бы в ANTS была добавлена трассировка стека и отслеживание неразмещенных одноразовых объектов, я бы не увидел необходимости использовать что-либо еще.
Недавно я обнаружил EQATEC Profiler http://www.eqatec.com/tools/profiler . Он работает с большинством версий .NET и на множестве платформ. Он прост в использовании, а его части бесплатны даже для коммерческого использования.
[ Полное раскрытие ]
Хотя он еще не настолько полнофункциональный, как некоторые другие профилировщики памяти .NET, перечисленные здесь, на рынке появилась новая запись под названием JustTrace . Он сделан Telerik, и его основная цель - сделать трассировку / профилирование проще и быстрее для всех типов приложений (веб / Silverlight / рабочий стол).
Если вы когда-либо находили профилирование и оптимизацию пугающими или медленными с другими инструментами, тогда стоит взглянуть на 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), и он работает довольно хорошо:
Недавно они также добавили «Персональную лицензию», которая значительно дешевле корпоративной. Тем не менее, если кто-то еще знает более дешевые или даже бесплатные, я бы тоже хотел услышать :-)
Не забывайте удивительный scitech .net профилировщик памяти
Он отлично подходит для отслеживания того, почему вашему приложению .net не хватает памяти.
Я бы добавил, что способность dotTrace различать сессии памяти и трассировки производительности абсолютно неоценима (ANTS также может иметь функцию различий в памяти, но я не видел различий в производительности).
Возможность запустить сеанс профилирования до и после исправления или улучшения ошибки, а затем сравнить результаты невероятно ценно, особенно с гигантским унаследованным приложением .NET (как в моем случае), где производительность никогда не была приоритетом и где можно было бы найти узкие места. ОЧЕНЬ утомительно. Выполнение сравнения до и после позволяет увидеть изменение количества вызовов для каждого метода и изменение продолжительности для каждого метода .
Это полезно не только во время изменения кода, но также и в том случае, если у вас есть приложение, которое использует разные базы данных, скажем, для каждого клиента / клиента. Если один клиент жалуется на медлительность, вы можете запустить сеанс профилирования, используя его базу данных, и сравнить результаты с «быстрой» базой данных, чтобы определить, какие операции способствуют замедлению. Конечно, существует множество инструментов для повышения производительности на стороне базы данных, но иногда я действительно помогаю увидеть показатели производительности со стороны приложения (так как это ближе к тому, что на самом деле видит пользователь).
Итог: dotTrace отлично работает, и разница неоценима.
AQTime разумен, но имеет некоторую кривую обучения и не так прост в использовании, как встроенный в Team Suite
В прошлом я использовал профилировщик, который поставляется с Visual Studio Team System .
Текущая версия SharpDevelop (3.1.1) имеет хороший встроенный профилировщик. Он довольно быстрый и очень хорошо интегрируется в IDE SharpDevelop и его бегунок NUnit. Результаты отображаются в гибком стиле дерева / списка (используйте LINQ, чтобы создать свой собственный выбор). Двойной щелчок по отображаемому методу переходит прямо в исходный код.
Я сомневаюсь, что профилировщик, который поставляется с Visual Studio Team System, является лучшим профилировщиком, но я обнаружил, что он достаточно хорош во многих случаях. Что конкретно вам нужно помимо того, что предлагает VS?
РЕДАКТИРОВАТЬ: К сожалению, он доступен только в VS Team System, но если у вас есть доступ к нему, стоит проверить.
Последняя версия профилировщика памяти ANTS (думаю, это 5) просто потрясающая !!! Я преследовал утечку, используя WinDbg и SOS, так как это оказалось лучшим способом раньше, затем я попробовал ANTS, и я получил его за несколько минут. Действительно замечательная часть программного обеспечения.
Анализатор производительности Intel® VTune ™ для быстрой выборки
Я должен принести вам удивительный инструмент, который я использовал некоторое время назад. AVICode Interceptor Studio . В моей предыдущей компании мы использовали этот замечательный инструмент для профилирования веб-приложения ( Предполагается, что это единственное крупнейшее веб-приложение в мире и крупнейший гражданский ИТ-проект, когда-либо сделанный ). Команда исполнителей творила чудеса с помощью этого великолепного инструмента. Настроить его сложно, но это разовое занятие, и я бы сказал, что оно того стоит. Оформить заказ на этой странице для деталей.
Спасибо Джеймс
Для меня SpeedTrace - лучший инструмент на рынке, потому что он не только помогает вам найти узкие места в ваших приложениях. Это также поможет вам в сценариях устранения неполадок выяснить, почему ваше приложение зависало, ваша установка не была установлена, ваше приложение зависало, производительность вашего приложения иногда низкая в зависимости от ввода данных, например, для выявления медленных транзакций в БД.
Недавно я тестировал JustTrace от Telerik, и хотя он далеко от готового продукта, ребята идут в правильном направлении.
Профилировщик NuMega True Time работает в DevPartner Studio от Micro Focus. Он обеспечивает детализацию на уровне строк и методов для приложений .NET, требующих только PDB, без необходимости в источнике (но это помогает.). Он может отличить алгоритмически тяжелые подпрограммы от тех, которые требуют длительного ввода-вывода, используя наш собственный драйвер синхронизации режима ядра для каждого потока. Версия 10.5 поставляется с новой поддержкой 64 процессов 4 февраля 2011 года. Бесстыдный плагин: я работаю над линейкой продуктов DevPartner. Следите за новостями о запуске 10.5 на http://www.DevPartner.com .
Отказ от ответственности: я менеджер по продукту DevPartner в Micro Focus.
Я нашел много проблем в большом приложении C #, использующем это .
Обычно проблема возникает во время запуска или завершения работы, когда плагины загружаются, а большие структуры данных создаются, уничтожаются, сериализуются или десериализуются. Часто они создаются и инициализируются более одного раза, а обработчики изменений добавляются несколько раз, что еще больше усугубляет проблему.
В таких случаях программа может быть настолько вялой, что достаточно только 2 выборки, чтобы точно определить виновные сайты вызова метода / функции / свойства.
Мы выбрали YourKit Profiler для .NET в моей компании, так как это было лучшее соотношение цены и качества. Для небольшой компании, которая хочет иметь гибкое лицензирование (плавающие лицензии), это был идеальный выбор - в то время ANTS была медальоном для разработчиков.
Кроме того, он предоставил нам возможность присоединиться к запущенному процессу, что было невозможно с dotTrace. Однако следует помнить, что присоединение - не лучший вариант, поскольку все .NET будет тормозить, но это был единственный способ профилировать приложения .NET, запущенные другими процессами. С точки зрения функциональности ANTS и dotTrace были лучше, но в конце концов YourKit был достаточно хорош.