Какие профилировщики вы использовали при работе с программами .net, и что вы особенно рекомендуете?
Что такое хорошие профилировщики .NET?
Ответ 1
Я использовал JetBrains dotTrace и Redgate ANTS, Они довольно похожи по своим характеристикам и цене. Они оба предлагают полезное профилирование производительности и довольно базовое профилирование памяти.
dotTrace интегрируется с Resharper, что очень удобно, так как вы можете профилировать производительность unit test одним щелчком мыши из среды IDE. Тем не менее, dotTrace часто, как представляется, дает ложные результаты (например, говорят, что для выполнения метода потребовалось несколько лет)
Я предпочитаю, чтобы ANTS представлял результаты профилирования. Он показывает, что исходный код и слева от каждой строки говорит вам, сколько времени потребовалось для запуска. dotTrace имеет только древовидный вид.
Профайлер EQATEC довольно прост и требует, чтобы вы скомпилировали специальные инструментальные версии ваших сборок, которые затем можно запустить в профилировщике EQATEC. Это, однако, бесплатно.
В целом я предпочитаю ANTS для профилирования производительности, хотя, если вы используете Resharper, тогда интеграция dotTrace является функцией убийцы и означает, что она превосходит ANTS в юзабилити.
Бесплатный Microsoft CLR Profiler (.NET framework 2.0/. Framework 4.0) - это все, что вам нужно для профилирования .NET.
Обновление 2011:
Профилер памяти Scitech имеет довольно простой интерфейс, но много полезной информации, включая некоторую информацию о неуправляемой памяти, которой нет dotTrace и ANTS - вы может оказаться полезным, если вы выполняете COM-взаимодействие, но мне еще не найти какой-либо профилировщик, который затрудняет диагностику проблем с памятью COM - вам обычно приходится вырываться windbg.exe
.
Профилировщик ANTS появился в прыжках за последние несколько лет, и его профилировщик памяти имеет некоторые действительно полезные функции, которые теперь подталкивают его к dotTrace как пакет в моей оценке. Мне повезло иметь лицензии для обоих, но если вы собираетесь купить один профилировщик .Net как для производительности, так и для памяти, сделайте это ANTS.
Ответ 2
Другие рассмотрели профилирование производительности, но в отношении профилирования памяти В настоящее время я оцениваю как Scitech.NET Memory Profiler 3.1, так и ANTS Memory Profiler 5.1 (текущие версии по состоянию на сентябрь 2009 года). Я пробовал JetBrains один год или два назад, и это было не так хорошо, как ANTS (для профилирования памяти), поэтому я не беспокоился на этот раз. От чтения веб-сайтов, похоже, у него нет тех же функций профилирования памяти, что и два других.
Оба ANTS и профилировщик памяти Scitech имеют функции, которых нет у другого, поэтому лучше всего будет зависеть от ваших предпочтений. Вообще говоря, Scitech предоставляет более подробную информацию, в то время как ANTS действительно невероятна при идентификации протекающего объекта. В целом, я предпочитаю ANTS один, потому что он так быстро обнаруживает возможные утечки.
Вот основные плюсы и минусы каждого из моего опыта:
Общие функции ANTS и Profit Profession.NET Scitech
- Функция анализа в режиме реального времени
- Отличные практические видео на своих веб-сайтах.
- Простота использования
- Разумно исполнитель (очевидно, медленнее, чем без профайлера, но не столько вас разочаровывает).
- Показать экземпляры протекающих объектов
- В основном они оба хорошо выполняют работу
Муравьи
- Фильтры с одним щелчком мыши, чтобы найти общие утечки, в том числе: объекты, сохраненные только обработчиками событий, объекты, которые расположены, но все еще живые, и объекты, которые только поддерживаются ссылкой с расположенного объекта, Это, вероятно, функция убийцы ANTS - из-за этого обнаружение утечек невероятно быстро. По моему опыту, большинство утечек вызвано обработкой обработчиков событий, и ANTS просто направляет вас прямо к этим объектам. Высокий.
- График сохранения объектов. Хотя такая же информация доступна в Scitech, ее гораздо проще интерпретировать в ANTS.
- Показывает размер с детьми в дополнение к размеру самого объекта (но только тогда, когда экземпляр выбран, к сожалению, не в общем списке классов).
- Улучшенная интеграция с Visual Studio (щелкните правой кнопкой мыши по графику, чтобы перейти к файлу)
Scitech.NET Memory Profiler
- Показывает трассировку стека, когда объект был выделен. Это действительно полезно для объектов, которые выделяются в разных местах. С ANTS трудно точно определить, где был создан просочившийся объект.
- Показывает количество одноразовых объектов, которые не были удалены. Хотя это не указывает на утечку, оно выявляет возможности для устранения этой проблемы и повышения производительности вашего приложения в результате более быстрой сборки мусора.
- Более подробные параметры фильтрации (несколько столбцов можно отфильтровать независимо).
- Представляет информацию об общих созданных объектах (включая собранные мусора). ANTS показывает только "живую" статистику объекта. Это упрощает анализ и настройку общей производительности приложений (например, укажите, где много ненужных объектов, которые не обязательно протекают).
В качестве резюме я думаю, что ANTS помогает вам быстрее узнать, что происходит, в то время как Scitech предоставляет более подробную информацию о вашей общей производительности памяти приложения и отдельных объектах, как только вы знаете, на что смотреть (например, трассировка стека при создании). Если в ANTS была добавлена трассировка стека и отслеживание несвязанных одноразовых объектов, я бы не видел необходимости использовать что-либо еще.
Ответ 3
Недавно я обнаружил EQATEC Profiler http://www.eqatec.com/tools/profiler. Он работает с большинством версий .NET и на множестве платформ. Он прост в использовании, и его части свободны даже для коммерческого использования.
Ответ 4
Пока еще нет полнофункциональных, как некоторые из других профилировщиков .NET, перечисленных здесь, на рынке появилась новая запись JustTrace. Это сделано Telerik, и его основной задачей является упрощение и ускорение трассировки/профилирования для всех типов приложений (веб/Silverlight/desktop).
Если вы когда-либо находили, что профилирование и оптимизация запугивают или замедляют работу с другими инструментами, то JustTrace может стоить внимания.
Ответ 5
Не забывайте nProf - префектурный, бесплатный профилировщик.
Ответ 6
Я нашел dotTrace Profiler JetBrains отличный инструмент для профилирования .NET и их режим ASP.NET - это качество.
Ответ 7
ANTI Profiler. Я не использовал много, но у меня нет никаких претензий к ANTS. Визуализация действительно полезна.
Ответ 8
AutomatedQA AQTime для синхронизации и SciTech MemProfiler для памяти.
Ответ 9
Если вы ищете что-то быстрое, легкое и бесплатное, http://code.google.com/p/slimtune/, похоже, отлично справляется с работой.
Ответ 10
Я работал с JetBrains dotTrace для WinForms и консольных приложений (еще не тестировался на ASP.net), и он отлично работает а также:
Недавно они также добавили "Личную лицензию", которая значительно дешевле, чем корпоративная. Тем не менее, если кто-то еще знает какие-то более дешевые или даже бесплатные, я тоже хотел бы услышать: -)
Ответ 11
Не забывайте, что aweeome scitech . Профайлер сети памяти
Это отлично подходит для отслеживания того, почему в вашем .net-приложении заканчивается память.
Ответ 12
Я бы добавил, что функция dotTrace для diff-памяти и сеансов трассировки производительности абсолютно бесценна (ANTS может также иметь функцию памяти, но я не видел разницу в производительности).
Возможность запуска сеанса профилирования до и после исправления или улучшения ошибок, то сравнение результатов невероятно ценно, особенно с помощью приложения с мамонтовым наследием .NET(как и в моем случае), где производительность никогда не была приоритетом и где поиск узкие места могут быть ОЧЕНЬ утомительными. Выполнение разницы "до и после" позволяет увидеть изменение количества вызовов для каждого метода и изменение продолжительности для каждого метода.
Это полезно не только при изменении кода, но также и при наличии приложения, использующего другую базу данных, например, для каждого клиента/клиента. Если один клиент жалуется на медленность, вы можете запустить сеанс профилирования, используя свою базу данных, и сравнить результаты с "быстрой" базой данных, чтобы определить, какие операции способствуют медленности. Конечно, есть много инструментов производительности на стороне базы данных, но иногда мне действительно помогает видеть показатели производительности со стороны приложения (так как это ближе к тому, что на самом деле видит пользователь).
Нижняя строка: dotTrace отлично работает, и diff неоценим.
Ответ 13
AQTime разумно, но имеет немного кривую обучения и не так прост в использовании, как встроенный в один в Team Suite
Ответ 14
В прошлом Ive использовал профайлер, который поставляется с Visual Studio Team System.
Ответ 15
В текущем выпуске SharpDevelop (3.1.1) есть хороший интегрированный профилировщик. Это довольно быстро и очень хорошо интегрируется в среду разработки SharpDevelop и ее бегун NUnit. Результаты отображаются в гибком стиле Tree/List (используйте LINQ для создания собственного выбора). Двойной щелчок отображаемого метода переходит непосредственно в исходный код.
Ответ 16
Я работал с профилировщиком RedGate в прошлом. Работала для меня.
Ответ 17
Не пробовал сам, но, может быть, dotTrace? Их приложение ReSharper, безусловно, является хорошим. Возможно, dotTrace тоже:)
Ответ 18
Я сомневаюсь, что профилировщик, который поставляется вместе с Visual Studio Team System, является лучшим профилировщиком, но я нашел его достаточно хорошим во многих случаях. Что конкретно вам нужно, кроме того, что предлагает VS?
EDIT: К сожалению, он доступен только в VS Team System, но если у вас есть доступ к этому, стоит проверить.
Ответ 19
Последняя версия профайлера памяти ANTS (я думаю, это 5) просто качается!!! Я преследовал утечку с помощью WinDbg и SOS, так как это оказалось лучшим способом раньше, затем я попробовал ANTS, и я получил его за считанные минуты. Действительно замечательная часть программного обеспечения.
Ответ 20
Я хотел бы добавить yourkit java и .net профилировщик, я люблю его для Java, не пробовал версию .NET хотя.
Ответ 21
Несчастливо большинство профилировщиков, которых я пробовал, не удалось при использовании с хвостовыми вызовами, в первую очередь ANTS. Я просто заканчиваю тем, что пишу сам. В CodeProject есть простая реализация, которую вы можете использовать в качестве базы.
Ответ 22
Анализатор производительности Intel® VTune ™ для быстрой выборки
Ответ 23
Я должен принести замечательный инструмент вашему уведомлению, которое я когда-то использовал. AVICode Interceptor Studio. В моей предыдущей компании мы использовали этот замечательный инструмент для профилирования web-приложения (это, как предполагается, самое крупное веб-приложение в мире и крупнейший мирный ИТ-проект, когда-либо сделанный). Команда разработчиков сделала чудеса с помощью этого великолепного инструмента. Это боль, чтобы настроить его, но это одноразовая работа, и я бы сказал, что это того стоит. Оформить заказ эту страницу для деталей.
Спасибо, Джеймс
Ответ 24
Для меня SpeedTrace - лучший инструмент на рынке, потому что он не только поможет вам найти узкие места внутри ваших приложений. Это также помогает вам в поиске и устранении неисправностей, чтобы узнать, почему ваше приложение терпит крах, ваша установка не была установлена, ваше приложение зависало, производительность вашего приложения иногда невелика в зависимости от ввода данных, например. для определения медленных транзакций db.
Ответ 25
Профайлер NuMega True Time живет в DevPartner Studio от Micro Focus. Он предоставляет подробные сведения о строках и методах для приложений .NET, требующих только PDB, не требующих источника (но это помогает). Он может различать алгоритмически тяжелые процедуры по сравнению с режимами с длинными ожиданиями ввода-вывода, используя наш запатентованный драйвер времени в режиме ядра. Версия 10.5 поставляется с новой поддержкой 64-х процессов 4 февраля 2011 года. Бесстыдная плагин: я работаю над линейкой продуктов DevPartner. Следуйте за http://www.DevPartner.com для новостей о запуске 10.5.
Отказ от ответственности: я являюсь менеджером продуктов для DevPartner в Micro Focus.
Ответ 26
Недавно я тестировал Telerik JustTrace, и, хотя он далеко от готового продукта, ребята идут в правильном направлении.
Ответ 27
Если лицензирование является проблемой, вы можете попробовать WINDBG для профилирования памяти
Ответ 28
Я нашел много проблем в большом приложении С#, используя .
Обычно проблема возникает во время запуска или выключения при загрузке плагинов, а большие структуры данных создаются, уничтожаются, сериализуются или десериализуются. Часто они создаются и инициализируются более одного раза, а обработчики изменений добавляются несколько раз, что еще больше усугубляет проблему.
В таких случаях программа может быть настолько вялой, что достаточно всего 2 выборок, чтобы точно определить сайты, вызывающие вину метод/функция/свойство.
Ответ 29
Мы выбрали YourKit Profiler для .NET в моей компании, поскольку это была лучшая ценность (цена против функции). Для небольшой компании, которая хочет иметь гибкое лицензирование (плавающие лицензии), это был идеальный выбор - ANTS в это время был медальоном разработчика.
Кроме того, он предоставил нам возможность подключаться к запущенному процессу, который невозможен с помощью dotTrace. Остерегайтесь, однако, что подключение не является лучшим вариантом, так как все .NET замедляется, но это был единственный способ профилировать приложения .NET, запущенные другими процессами. Мудрый, ANTS и dotTrace были лучше, но в конце концов YourKit был достаточно хорош.
Ответ 30
Если вы находитесь на ASP.NET MVC, вы можете попробовать MVCMiniProfiler (http://benjii.me/2011/07/using-the-mvc-mini-profiler-with-entity-framework/)