Какие профилировщики вы использовали при работе с программами .net, и что вы особенно рекомендуете?
Я использовал 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.
Другие рассмотрели профилирование производительности, но в отношении профилирования памяти В настоящее время я оцениваю как Scitech.NET Memory Profiler 3.1, так и ANTS Memory Profiler 5.1 (текущие версии по состоянию на сентябрь 2009 года). Я пробовал JetBrains один год или два назад, и это было не так хорошо, как ANTS (для профилирования памяти), поэтому я не беспокоился на этот раз. От чтения веб-сайтов, похоже, у него нет тех же функций профилирования памяти, что и два других.
Оба ANTS и профилировщик памяти Scitech имеют функции, которых нет у другого, поэтому лучше всего будет зависеть от ваших предпочтений. Вообще говоря, Scitech предоставляет более подробную информацию, в то время как ANTS действительно невероятна при идентификации протекающего объекта. В целом, я предпочитаю ANTS один, потому что он так быстро обнаруживает возможные утечки.
Вот основные плюсы и минусы каждого из моего опыта:
Общие функции ANTS и Profit Profession.NET Scitech
Муравьи
Scitech.NET Memory Profiler
В качестве резюме я думаю, что 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 - это качество.
ANTI Profiler. Я не использовал много, но у меня нет никаких претензий к ANTS. Визуализация действительно полезна.
Если вы ищете что-то быстрое, легкое и бесплатное, http://code.google.com/p/slimtune/, похоже, отлично справляется с работой.
AutomatedQA AQTime для синхронизации и SciTech MemProfiler для памяти.
Я работал с JetBrains dotTrace для WinForms и консольных приложений (еще не тестировался на ASP.net), и он отлично работает а также:
Недавно они также добавили "Личную лицензию", которая значительно дешевле, чем корпоративная. Тем не менее, если кто-то еще знает какие-то более дешевые или даже бесплатные, я тоже хотел бы услышать: -)
Не забывайте, что aweeome scitech . Профайлер сети памяти
Это отлично подходит для отслеживания того, почему в вашем .net-приложении заканчивается память.
Я бы добавил, что функция dotTrace для diff-памяти и сеансов трассировки производительности абсолютно бесценна (ANTS может также иметь функцию памяти, но я не видел разницу в производительности).
Возможность запуска сеанса профилирования до и после исправления или улучшения ошибок, то сравнение результатов невероятно ценно, особенно с помощью приложения с мамонтовым наследием .NET(как и в моем случае), где производительность никогда не была приоритетом и где поиск узкие места могут быть ОЧЕНЬ утомительными. Выполнение разницы "до и после" позволяет увидеть изменение количества вызовов для каждого метода и изменение продолжительности для каждого метода.
Это полезно не только при изменении кода, но также и при наличии приложения, использующего другую базу данных, например, для каждого клиента/клиента. Если один клиент жалуется на медленность, вы можете запустить сеанс профилирования, используя свою базу данных, и сравнить результаты с "быстрой" базой данных, чтобы определить, какие операции способствуют медленности. Конечно, есть много инструментов производительности на стороне базы данных, но иногда мне действительно помогает видеть показатели производительности со стороны приложения (так как это ближе к тому, что на самом деле видит пользователь).
Нижняя строка: dotTrace отлично работает, и diff неоценим.
AQTime разумно, но имеет немного кривую обучения и не так прост в использовании, как встроенный в один в Team Suite
В текущем выпуске SharpDevelop (3.1.1) есть хороший интегрированный профилировщик. Это довольно быстро и очень хорошо интегрируется в среду разработки SharpDevelop и ее бегун NUnit. Результаты отображаются в гибком стиле Tree/List (используйте LINQ для создания собственного выбора). Двойной щелчок отображаемого метода переходит непосредственно в исходный код.
В прошлом Ive использовал профайлер, который поставляется с Visual Studio Team System.
Я хотел бы добавить yourkit java и .net профилировщик, я люблю его для Java, не пробовал версию .NET хотя.
Последняя версия профайлера памяти ANTS (я думаю, это 5) просто качается!!! Я преследовал утечку с помощью WinDbg и SOS, так как это оказалось лучшим способом раньше, затем я попробовал ANTS, и я получил его за считанные минуты. Действительно замечательная часть программного обеспечения.
Не пробовал сам, но, может быть, dotTrace? Их приложение ReSharper, безусловно, является хорошим. Возможно, dotTrace тоже:)
Я сомневаюсь, что профилировщик, который поставляется вместе с Visual Studio Team System, является лучшим профилировщиком, но я нашел его достаточно хорошим во многих случаях. Что конкретно вам нужно, кроме того, что предлагает VS?
EDIT: К сожалению, он доступен только в VS Team System, но если у вас есть доступ к этому, стоит проверить.
Я работал с профилировщиком RedGate в прошлом. Работала для меня.
Если лицензирование является проблемой, вы можете попробовать WINDBG для профилирования памяти
Недавно я тестировал Telerik JustTrace, и, хотя он далеко от готового продукта, ребята идут в правильном направлении.
Профайлер NuMega True Time живет в DevPartner Studio от Micro Focus. Он предоставляет подробные сведения о строках и методах для приложений .NET, требующих только PDB, не требующих источника (но это помогает). Он может различать алгоритмически тяжелые процедуры по сравнению с режимами с длинными ожиданиями ввода-вывода, используя наш запатентованный драйвер времени в режиме ядра. Версия 10.5 поставляется с новой поддержкой 64-х процессов 4 февраля 2011 года. Бесстыдная плагин: я работаю над линейкой продуктов DevPartner. Следуйте за http://www.DevPartner.com для новостей о запуске 10.5.
Отказ от ответственности: я являюсь менеджером продуктов для DevPartner в Micro Focus.
Для меня SpeedTrace - лучший инструмент на рынке, потому что он не только поможет вам найти узкие места внутри ваших приложений. Это также помогает вам в поиске и устранении неисправностей, чтобы узнать, почему ваше приложение терпит крах, ваша установка не была установлена, ваше приложение зависало, производительность вашего приложения иногда невелика в зависимости от ввода данных, например. для определения медленных транзакций db.
Я должен принести замечательный инструмент вашему уведомлению, которое я когда-то использовал. AVICode Interceptor Studio. В моей предыдущей компании мы использовали этот замечательный инструмент для профилирования web-приложения (это, как предполагается, самое крупное веб-приложение в мире и крупнейший мирный ИТ-проект, когда-либо сделанный). Команда разработчиков сделала чудеса с помощью этого великолепного инструмента. Это боль, чтобы настроить его, но это одноразовая работа, и я бы сказал, что это того стоит. Оформить заказ эту страницу для деталей.
Спасибо, Джеймс
Анализатор производительности Intel VTune для быстрой выборки
Несчастливо большинство профилировщиков, которых я пробовал, не удалось при использовании с хвостовыми вызовами, в первую очередь ANTS. Я просто заканчиваю тем, что пишу сам. В CodeProject есть простая реализация, которую вы можете использовать в качестве базы.
Если вы находитесь на ASP.NET MVC, вы можете попробовать MVCMiniProfiler (http://benjii.me/2011/07/using-the-mvc-mini-profiler-with-entity-framework/)
Мы выбрали YourKit Profiler для .NET в моей компании, поскольку это была лучшая ценность (цена против функции). Для небольшой компании, которая хочет иметь гибкое лицензирование (плавающие лицензии), это был идеальный выбор - ANTS в это время был медальоном разработчика.
Кроме того, он предоставил нам возможность подключаться к запущенному процессу, который невозможен с помощью dotTrace. Остерегайтесь, однако, что подключение не является лучшим вариантом, так как все .NET замедляется, но это был единственный способ профилировать приложения .NET, запущенные другими процессами. Мудрый, ANTS и dotTrace были лучше, но в конце концов YourKit был достаточно хорош.
Я нашел много проблем в большом приложении С#, используя .
Обычно проблема возникает во время запуска или выключения при загрузке плагинов, а большие структуры данных создаются, уничтожаются, сериализуются или десериализуются. Часто они создаются и инициализируются более одного раза, а обработчики изменений добавляются несколько раз, что еще больше усугубляет проблему.
В таких случаях программа может быть настолько вялой, что достаточно всего 2 выборок, чтобы точно определить сайты, вызывающие вину метод/функция/свойство.