




Раньше я работал с профайлером RedGate. Сделал работу за меня.
Я работал с JetBrains dotTrace для WinForms и консольных приложений (еще не тестировался на ASP.net), и он работает довольно хорошо:
Недавно они также добавили «Персональную лицензию», которая значительно дешевле корпоративной. Тем не менее, если кто-то знает более дешевые или даже бесплатные, я тоже хотел бы услышать :-)
ANTS Profiler. Я не пользовался многими, но особых претензий к ANTS не имею. Визуализация действительно полезна.
Не забывайте nvProf - отличный бесплатный профилировщик.
У меня отлично сработало. Теперь это проект Google Code. Выпущен в июле 2009 года.
На странице nProf теперь написано: NProf больше не активно развивается. Если вы ищете профилировщик .NET с открытым исходным кодом, обратите внимание на SlimTune (code.google.com/p/slimtune)
Недавно я обнаружил EQATEC Profiler http://www.eqatec.com/tools/profiler. Он работает с большинством версий .NET и на множестве платформ. Он прост в использовании, а его части бесплатны даже для коммерческого использования.
Также не удается выполнить хвостовые вызовы :( Сообщенная ошибка.
Это бесплатно только для некоммерческого использования.
Это было совершенно бесплатно еще в августе 2008 года, когда TrolleFar написал свой ответ. Теперь, как говорит Джон, это бесплатно только для некоммерческого использования.
Оказывается, они снова изменили условия лицензии. Некоторые его части снова бесплатны для коммерческого использования.
По состоянию на февраль 2011 года обычная версия .NET для самостоятельной / коммерческой деятельности является бесплатной. Этот инструмент хорош, потому что он работает на модели клиент / сервер и может профилировать / обходить повторяющиеся границы (например, Native-> COM-> NET-> COM-> NET можно профилировать). Хотя интерфейс ужасен :-)
AutomatedQA AQTime для синхронизации и SciTech MemProfiler для памяти.
MemProfiler спас нашу команду, когда у нас произошла утечка памяти. Я пробовал другие инструменты, но ни один другой инструмент не дал такой же детали.
Раньше я использовал профилировщик, поставляемый с Visual Studio Team System.
Я широко использовал JetBrains dotTrace и Редгейт МУРАВЬИ. Они довольно похожи по характеристикам и цене. Оба они предлагают полезное профилирование производительности и довольно простое профилирование памяти.
dotTrace интегрируется с Resharper, что действительно удобно, поскольку вы можете профилировать производительность модульного теста одним щелчком мыши в среде IDE. Однако dotTrace часто дает ложные результаты (например, говорит, что метод занял несколько лет для запуска).
Я предпочитаю способ представления результатов профилирования в ANTS. Он показывает вам исходный код, а слева от каждой строки сообщает, сколько времени потребовалось для его запуска. dotTrace имеет только представление в виде дерева.
Профайлер EQATEC является довольно простым и требует от вас компиляции специальных инструментальных версий ваших сборок, которые затем можно запускать в профилировщике EQATEC. Однако это бесплатно.
В целом, я предпочитаю ANTS для профилирования производительности, хотя, если вы используете Resharper, интеграция dotTrace является отличной функцией и означает, что она превосходит ANTS по удобству использования.
Бесплатный Microsoft CLR Profiler (.Net framework 2.0 / .Net Framework 4.0) - это все, что вам нужно для профилирования памяти .NET.
Обновление 2011 г .:
Профилировщик памяти Scitech имеет довольно простой пользовательский интерфейс, но много полезной информации, включая некоторую информацию о неуправляемой памяти, которой не хватает dotTrace и ANTS - вы можете найти это полезным, если вы выполняете взаимодействие с COM, но мне еще предстоит найти профилировщик, который вызывает проблемы с памятью COM. легко диагностировать - обычно приходится выламывать windbg.exe.
Профилировщик ANTS стремительно развивался в последние несколько лет, и его профилировщик памяти имеет несколько действительно полезных функций, которые, по моей оценке, теперь опередили его как пакет dotTrace. Мне повезло, что у меня есть лицензии для обоих, но если вы собираетесь купить один профилировщик .Net как для производительности, так и для памяти, сделайте его ANTS.
Профилировщик в Visual Studio также очень прост в использовании, Visual Studio 2010 находится в бета-версии и, следовательно, также бесплатен. В 2010 году было несколько улучшений для просмотра конкуренции и параллелизма. попытайся...
@Rick К сожалению, профилировщик Visual Studio отсутствует в Professional Edition ...
Я категорически не согласен с тем, что профилировщик CLR - это все, что вам нужно для профилирования памяти .NET, хотя, возможно, это правда, если вы не цените свое время. В моем ответе ниже краткое изложение пары лучших профилировщиков памяти - они буду помогают намного быстрее находить утечки памяти и потенциальные проблемы.
Текущие версии профилировщика EQUATEC больше не бесплатны.
Похоже, что EQATEC Profiler снова стал бесплатным для .NET (полная структура)
EQATEC Profiler теперь бесплатен для все платформы с некоторыми ограничениями, связанными с DLL: рабочий стол, CF, Silverlight и WP7. Это по-прежнему единственный профилировщик, поддерживающий все платформы .NET 2.0+.
Внимательно прочтите условия лицензии. DotTrace чрезвычайно ограничивает передачу лицензионных ключей между разработчиками.
Связанный профилировщик CLR - это старая версия, новая - здесь
У меня были отличные результаты с последней версией CLR Profiler. Это бесплатно, поставляется с исходным кодом и, самое главное, дает мне все, что мне нужно. Возможно, в нем не было блеска коммерческих проектов, но для меня в нем было более чем достаточно деталей.
Я использую dotTrace с dotMemory (отдельное приложение от JetBrains) и обнаружил, что они всегда доставляют то, что мне нужно. Нет опыта работы с другими, поэтому я не могу сказать, насколько он хорош в сравнении.
К сожалению, большинство профилировщиков, которые я пробовал, терпели неудачу при использовании с хвостовыми вызовами, особенно с ANTS. Я просто пишу свои собственные. В CodeProject есть простая реализация, которую вы можете использовать в качестве основы.
Анализатор производительности Intel® VTune ™ для быстрого отбора проб
@ utility73 - действительно отличная построчная разбивка стоимости процессора в vtune - именно это я и искал сегодня. Спасибо, что предложили это.
Не забудьте об удивительном scitech Профилировщик памяти .net
Он отлично подходит для отслеживания того, почему вашему приложению .net не хватает памяти.
Очень красивый инструмент. Проста в использовании и позволяет перемещаться по графу объекта. Мне особенно нравится отслеживание памяти в реальном времени. Он показывает вам, как счетчики ваших объектов развиваются во время выполнения приложения.
AQTime разумен, но требует некоторого обучения и не так прост в использовании, как встроенный в Team Suite.
Сам не пробовал, а может dotTrace? Их приложение ReSharper, безусловно, хорошее. Может быть, dotTrace тоже :)
Я использовал dotTrace и могу порекомендовать его.
Я сомневаюсь, что профилировщик, поставляемый с Visual Studio Team System, является лучшим профилировщиком, но во многих случаях я находил его достаточно хорошим. Что конкретно вам нужно помимо того, что предлагает VS?
Обновлено: К сожалению, он доступен только в VS Team System, но если у вас есть доступ к нему, стоит проверить.
Я говорил о том, что есть в VS2008, но он может быть доступен не во всех версиях (я использую VSTS). Из видеороликов PDC2008 кажется, что профилировщик значительно улучшится в VS2010.
Этот профилировщик доступен только в версиях Visual Studio для Team Systems.
Visual Studio Team System (Developer Edition) имеет профилировщик. См. Microsoft.com/visualstudio/en-us/products/teamsystem/…>.
В Visual Studio есть профилировщик с VS 2005. Он доступен только в Team System. Собственно, поэтому я использую командную систему (на работе у меня профессионал). На мой взгляд, это очень хороший профайлер.
Это прекрасный профайлер, но он не совсем соответствует стандартам новой версии ANTS.
Я обнаружил, что dotTrace Profiler by JetBrains является отличным инструментом профилирования для .NET, а их режим ASP.NET - это качество.
Я бы добавил, что способность dotTrace к diff память и сеансы трассировки производительности абсолютно бесценна (ANTS также может иметь функцию сравнения памяти, но я не видел разницы в производительности).
Возможность запускать сеанс профилирования до и после исправления ошибки или улучшения, а затем сравнивать результаты невероятно ценно, особенно с гигантским устаревшим .NET-приложением (как в моем случае), где производительность никогда не была приоритетом и где можно было найти узкие места. ОЧЕНЬ утомительно. Выполнение различий до и после позволяет увидеть изменение количества вызовов для каждого метода и изменение продолжительности для каждого метода.
Это полезно не только при изменении кода, но и в том случае, если у вас есть приложение, которое использует другую базу данных, скажем, для каждого клиента / покупателя. Если один из клиентов жалуется на медлительность, вы можете запустить сеанс профилирования с использованием его базы данных и сравнить результаты с «быстрой» базой данных, чтобы определить, какие операции приводят к замедлению. Конечно, есть много инструментов для оценки производительности на стороне базы данных, но иногда я действительно помогаю увидеть метрики производительности со стороны приложения (поскольку это ближе к тому, что на самом деле видит пользователь).
Итог: dotTrace отлично работает, и разница неоценима.
Я обнаружил множество проблем в большом приложении C#, использующем это.
Обычно проблема возникает во время запуска или завершения работы, когда подключаемые модули загружаются, а большие структуры данных создаются, уничтожаются, сериализуются или десериализуются. Часто они создаются и инициализируются более одного раза, а обработчики изменений добавляются несколько раз, что еще больше усугубляет проблему.
В подобных случаях программа может работать настолько медленно, что достаточно всего двух выборок для определения виновных сайтов вызова метода / функции / свойства.
Последняя версия профилировщика памяти ANTS (думаю, 5) просто качает !!! У меня была утечка, использующая WinDbg и SOS, так как раньше это оказалось лучшим способом, затем я попробовал 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
Подводя итог, я думаю, что ANTS помогает быстрее находить утечки, в то время как Scitech предоставляет немного больше подробностей об общей производительности памяти вашего приложения и отдельных объектах, если вы знаете, на что смотреть (например, трассировку стека при создании). Если бы трассировка стека и отслеживание неудаленных одноразовых объектов были добавлены в ANTS, я бы не увидел необходимости использовать что-либо еще.
Версия 4.0 .NET Memory Profiler (сейчас в предварительной версии) теперь имеет графическое представление. Это была единственная функция, которая мне понравилась в профилировщике ANTS, которой не было у Scitech (в 3.1 / 3.5).
Текущая версия SharpDevelop (3.1.1) имеет хороший интегрированный профилировщик. Это довольно быстро и очень хорошо интегрируется в среду разработки SharpDevelop и ее средство запуска NUnit. Результаты отображаются в гибком стиле «дерево / список» (используйте LINQ для создания собственного выбора). Двойной щелчок по отображаемому методу позволяет перейти непосредственно к исходному коду.
Я должен представить вашему вниманию удивительный инструмент, которым я когда-то пользовался. AVICode Interceptor Studio. В моей предыдущей компании мы использовали этот замечательный инструмент для профилирования веб-приложения (Предполагается, что это будет крупнейшее веб-приложение в мире и самый крупный гражданский ИТ-проект из когда-либо реализованных.). Команда исполнителей творит чудеса с помощью этого великолепного инструмента. Настроить его сложно, но это одноразовое действие, и я бы сказал, что оно того стоит. За подробностями обращайтесь к эта страница.
Спасибо, Джеймс
Я хотел бы добавить профилировщик твой набор java и .net, я люблю его для Java, но не пробовал версию .NET.
Для меня SpeedTrace - лучший инструмент на рынке, потому что он не только помогает вам находить узкие места внутри ваших приложений. Это также помогает вам в сценариях устранения неполадок, чтобы выяснить, почему ваше приложение дает сбой, ваша установка не была установлена, ваше приложение зависло, производительность вашего приложения иногда низкая в зависимости от ввода данных, например для выявления медленных транзакций БД.
Если вы ищете что-то быстрое, легкое и бесплатное, http://code.google.com/p/slimtune/, похоже, отлично справится со своей задачей.
Профайлер NuMega True Time существует в DevPartner Studio от Micro Focus. Он предоставляет подробную информацию на уровне строк и методов для приложений .NET, которым требуются только PDB, источник не требуется (но это помогает). Он может различать алгоритмически тяжелые подпрограммы и подпрограммы с длительным ожиданием ввода-вывода, используя наш проприетарный драйвер синхронизации режима ядра для каждого потока. Версия 10.5 поставляется с новой поддержкой 64-процессов 4 февраля 2011 года. Бесстыдный плагин: я работаю над линейкой продуктов DevPartner. Следите за новостями о запуске 10.5 на http://www.DevPartner.com.
Отказ от ответственности: я являюсь менеджером по продукту DevPartner в Micro Focus.
добро пожаловать в SO. Вам нужно будет сообщить о любых отношениях с DevPartner, иначе вы будете сочтены спаммером и будут рассматриваться как таковые. Я вижу, вы ответили на ряд вопросов профилирования ...
Хотя это еще не так полнофункционально, как некоторые другие перечисленные здесь профилировщики памяти .NET, на рынке появилась новая запись под названием JustTrace. Он создан Telerik, и его основная цель - упростить и ускорить отслеживание / профилирование для всех типов приложений (веб / Silverlight / настольный компьютер).
Если вы когда-либо находили профилирование и оптимизацию пугающими или медленными с другими инструментами, то стоит взглянуть на JustTrace.
Когда я иду скачать его и попробовать, Telerik хочет, чтобы я «зарегистрировался» и «создал учетную запись». И все эти кнопки подписки на новостную рассылку по умолчанию отмечены флажками. Я был бы счастлив попробовать JustTrace, но только если Telerik усложнит задачу.
Спасибо за попытку, Киралесса. Мы знаем, что этот процесс можно улучшить. Мы работаем над этим прямо сейчас. Мы надеемся вскоре устранить эти препятствия. На данный момент просто снимите флажки, и через 2 минуты у вас будет учетная запись и бесплатная загрузка JustTrace. Извините за кратковременные неприятности. -T
отправьте ответ и дайте мне знать, когда я смогу загрузить без создания учетной записи, и я попробую.
Обновление: сегодня я смог загрузить, используя ссылку в ответе, без необходимости создавать учетную запись.
Недавно я тестировал JustTrace от Telerik, и, хотя он еще далек от готового продукта, ребята движутся в правильном направлении.
Мы выбрали YourKit Profiler для .NET в моей компании, так как это было лучшее соотношение цены и возможностей. Для небольшой компании, которая хочет иметь гибкое лицензирование (плавающие лицензии), это был идеальный выбор - в то время ANTS был медальоном для разработчиков.
Кроме того, это дало нам возможность подключиться к запущенному процессу, что было невозможно с dotTrace. Однако помните, что присоединение - не лучший вариант, поскольку все .NET будет замедляться, но это был единственный способ профилировать приложения .NET, запускаемые другими процессами. Что касается функций, то ANTS и dotTrace были лучше, но в итоге YourKit оказался достаточно хорош.
Начиная с января 2012 года YourKit повысил цены на профилировщик YourKit. Таким образом, ценовое преимущество может больше не действовать.
Если лицензирование является проблемой, вы можете попробовать WINDBG для профилирования памяти.
Если вы используете ASP.NET MVC, вы можете попробовать MVCMiniProfiler (http://benjii.me/2011/07/using-the-mvc-mini-profiler-with-entity-framework/)
Выглядит заброшенным ... только альфа-релиз 2006 года :-(