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

Ответы Vorrtex и Ronen работают на меня, за исключением одной детали. После обтекания текста вокруг изображения был странный «отрицательный» край под изображением и на противоположной стороне. Я понял, что при установке диапазона на SpannableString я изменил

ss.setSpan(new MyLeadingMarginSpan2(lines, width), 0, ss.length(), 0);

на

ss.setSpan(new MyLeadingMarginSpan2(lines, width), 0, lines, 0);

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

374
задан 4 revs, 4 users 100% 9 December 2011 в 17:53
поделиться

30 ответов

Я широко использовал 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.

285
ответ дан 7 revs, 5 users 67% 9 December 2011 в 17:53
поделиться

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

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

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

0
ответ дан 2 revs 9 December 2011 в 17:53
поделиться

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

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

1
ответ дан 3 revs 9 December 2011 в 17:53
поделиться

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

1
ответ дан 2 revs 9 December 2011 в 17:53
поделиться

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

1
ответ дан Dirk 9 December 2011 в 17:53
поделиться

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

1
ответ дан Ivan Petrov 9 December 2011 в 17:53
поделиться

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

0
ответ дан eka808 9 December 2011 в 17:53
поделиться

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

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

1
ответ дан James Poulose 9 December 2011 в 17:53
поделиться

Intel® VTune ™ Performance Analyzer для быстрой выборки

1
ответ дан utility73 9 December 2011 в 17:53
поделиться

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

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

0
ответ дан Slobodan Savkovic 9 December 2011 в 17:53
поделиться

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

1
ответ дан leppie 9 December 2011 в 17:53
поделиться

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

2
ответ дан Redlab 9 December 2011 в 17:53
поделиться

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

2
ответ дан pablo 9 December 2011 в 17:53
поделиться

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

2
ответ дан Kev 9 December 2011 в 17:53
поделиться

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

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

2
ответ дан 2 revs 9 December 2011 в 17:53
поделиться

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

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

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

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

5
ответ дан shaunmartin 9 December 2011 в 17:53
поделиться

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

12
ответ дан palmsey 9 December 2011 в 17:53
поделиться

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

3
ответ дан Ant 9 December 2011 в 17:53
поделиться

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

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

7
ответ дан Sam Saffron 9 December 2011 в 17:53
поделиться

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

11
ответ дан Taudris 9 December 2011 в 17:53
поделиться

Автоматический QA AQTime для синхронизации и SciTech MemProfiler для памяти.

11
ответ дан Lars Truijens 9 December 2011 в 17:53
поделиться

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

14
ответ дан Chris Ballance 9 December 2011 в 17:53
поделиться

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

25
ответ дан 2 revs, 2 users 86% 9 December 2011 в 17:53
поделиться

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

45
ответ дан 3 revs 9 December 2011 в 17:53
поделиться

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

4
ответ дан Jeff Moser 9 December 2011 в 17:53
поделиться

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

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

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

31
ответ дан 2 revs 9 December 2011 в 17:53
поделиться

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

3
ответ дан 2 revs 9 December 2011 в 17:53
поделиться

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

2
ответ дан Svish 9 December 2011 в 17:53
поделиться

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

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

9
ответ дан 2 revs, 2 users 82% 9 December 2011 в 17:53
поделиться

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

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

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

Общие черты ANTS и Scitech .NET Memory Profiler

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

ANTS

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

Scitech .NET Memory Profiler

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

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

88
ответ дан Ben Robbins 9 December 2011 в 17:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: