Ответы Vorrtex и Ronen работают на меня, за исключением одной детали. После обтекания текста вокруг изображения был странный «отрицательный» край под изображением и на противоположной стороне. Я понял, что при установке диапазона на SpannableString я изменил
ss.setSpan(new MyLeadingMarginSpan2(lines, width), 0, ss.length(), 0);
на
ss.setSpan(new MyLeadingMarginSpan2(lines, width), 0, lines, 0);
, который остановил интервал после изображения. Может быть, не нужно во всех случаях, но думал, что я поделюсь.
Я широко использовал 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.
Я обнаружил множество проблем в большом приложении на C #, используя , это .
Обычно проблема возникает во время запуска или завершения работы, когда плагины загружаются, а большие структуры данных создаются, уничтожаются, сериализуются или десериализуются. Часто они создаются и инициализируются более одного раза, а обработчики изменений добавляются несколько раз, что еще больше усугубляет проблему.
В подобных случаях программа может быть настолько вялой, что достаточно только 2 выборки, чтобы точно определить виновные сайты вызова метода / функции / свойства.
Профилировщик NuMega True Time работает в DevPartner Studio от Micro Focus. Он обеспечивает детализацию на уровне строк и методов для приложений .NET, требующих только PDB, без необходимости в источнике (но это помогает.). Он может отличить алгоритмически тяжелые подпрограммы от тех, которые требуют длительного ввода-вывода, используя наш собственный драйвер синхронизации режима ядра для каждого потока. Версия 10.5 поставляется с новой поддержкой 64 процессов 4 февраля 2011 года. Бесстыдный плагин: я работаю над линейкой продуктов DevPartner. Следите за новостями о запуске 10.5 на http://www.DevPartner.com .
Отказ от ответственности: я менеджер по продукту DevPartner в Micro Focus.
Если лицензирование является проблемой, вы можете попробовать WINDBG для профилирования памяти
Для меня SpeedTrace - лучший инструмент на рынке, потому что он не только помогает вам найти узкие места в ваших приложениях. Он также помогает вам в сценариях устранения неполадок выяснить, почему ваше приложение зависало, ваша установка не была установлена, ваше приложение зависло, производительность вашего приложения иногда низкая в зависимости от ввода данных, например, идентифицировать медленные транзакции БД.
Недавно я тестировал JustTrace от Telerik, и хотя он далеко от готового продукта, ребята идут в правильном направлении.
Если вы работаете в ASP.NET MVC, вы можете попробовать MVCMiniProfiler (http://benjii.me/2011/07/using-the-mvc-mini-profiler-with-entity-framework/)
Я должен донести до вас удивительный инструмент, который я использовал некоторое время назад. AVICode Interceptor Studio . В моей предыдущей компании мы использовали этот замечательный инструмент для профилирования веб-приложения ( Это должно быть единственное крупнейшее веб-приложение в мире и крупнейший гражданский ИТ-проект, когда-либо сделанный ). Команда исполнителей творила чудеса с помощью этого великолепного инструмента. Настроить его сложно, но это одноразовое занятие, и я бы сказал, что оно того стоит. Оформить заказ можно на этой странице .
Спасибо, Джеймс
Intel® VTune ™ Performance Analyzer для быстрой выборки
Мы выбрали YourKit Profiler для .NET в моей компании, так как это было лучшее соотношение цены и качества. Для небольшой компании, которая хочет иметь гибкое лицензирование (плавающие лицензии), это был идеальный выбор - в то время ANTS была медальоном для разработчиков.
Кроме того, он предоставил нам возможность присоединиться к запущенному процессу, что было невозможно с dotTrace. Однако следует помнить, что присоединение - не лучший вариант, поскольку все .NET будет тормозить, но это был единственный способ профилировать приложения .NET, запущенные другими процессами. С точки зрения функциональности ANTS и dotTrace были лучше, но в конце концов YourKit был достаточно хорош.
К сожалению, большинство профилировщиков, которые я пробовал, не работали при использовании хвостовых вызовов, особенно ANTS. Я просто заканчиваю тем, что пишу свой собственный. Существует простая реализация CodeProject, которую вы можете использовать в качестве основы.
Я хотел бы добавить yourkit java и .net profiler. Я люблю его для Java, хотя и не пробовал .NET-версию.
Последняя версия профилировщика памяти ANTS (думаю, это 5) просто потрясающая !!! Я преследовал утечку, используя WinDbg и SOS, так как это оказалось лучшим способом раньше, затем я попробовал ANTS, и я получил его за несколько минут. Действительно замечательное программное обеспечение.
Я работал с профайлером RedGate в прошлом. Сделал работу за меня.
Я сомневаюсь, что профилировщик, который поставляется с Visual Studio Team System, является лучшим профилировщиком, но я обнаружил, что он достаточно хорош во многих случаях. Что конкретно вам нужно помимо того, что предлагает VS?
РЕДАКТИРОВАТЬ: К сожалению, это доступно только в VS Team System, но если у вас есть доступ к нему, стоит проверить.
Я хотел бы добавить, что способность dotTrace различать память и сеансы трассировки производительности абсолютно неоценима (ANTS также может иметь функцию различий в памяти, но я не видел различий в производительности).
Будучи в состоянии запустить сеанс профилирования до и после исправления ошибки или улучшения, сравните результаты невероятно ценно, особенно с гигантским унаследованным приложением .NET (как в моем случае), где производительность никогда не была приоритетом и где поиск узкие места могут быть ОЧЕНЬ утомительными. Выполнение различий до и после позволяет увидеть изменение количества вызовов для каждого метода и изменение продолжительности для каждого метода .
Это полезно не только во время изменения кода, но также и в том случае, если у вас есть приложение, которое использует разные базы данных, скажем, для каждого клиента / клиента. Если один клиент жалуется на медлительность, вы можете запустить сеанс профилирования, используя его базу данных, и сравнить результаты с «быстрой» базой данных, чтобы определить, какие операции способствуют замедлению. Конечно, существует много инструментов для повышения производительности на стороне базы данных, но иногда я действительно помогаю увидеть показатели производительности со стороны приложения (так как это ближе к тому, что на самом деле видит пользователь).
Итог: dotTrace отлично работает, и diff бесценен.
ANTS Profiler . Я не использовал много, но на самом деле у меня нет претензий к ANTS. Визуализация действительно полезна.
В прошлом я использовал профилировщик, который поставляется с Visual Studio Team System .
Не забудьте удивительный scitech .net memory profiler
Он отлично подходит для отслеживания того, почему вашему приложению .net не хватает памяти.
Если вы ищете что-то быстрое, простое и бесплатное, http://code.google.com/p/slimtune/ , похоже, отлично справится со своей работой.
Автоматический QA AQTime для синхронизации и SciTech MemProfiler для памяти.
Я обнаружил, что dotTrace Profiler от JetBrains является отличным инструментом профилирования для .NET, и их режим ASP.NET - это качество.
Не забудьте nProf - отличный, бесплатный профилировщик.
Недавно я обнаружил EQATEC Profiler http://www.eqatec.com/tools/profiler . Он работает с большинством версий .NET и на множестве платформ. Он прост в использовании, а его части бесплатны даже для коммерческого использования.
AQTime разумен, но имеет некоторую кривую обучения и не так прост в использовании, как встроенный в Team Suite
[ Полное раскрытие ]
Хотя он еще не настолько полнофункциональный, как некоторые из других профилировщиков памяти .NET, перечисленных здесь, есть новая запись о Рынок называется JustTrace . Он сделан Telerik, и его основная цель - сделать трассировку / профилирование проще и быстрее для всех типов приложений (веб / Silverlight / рабочий стол).
Если вы когда-либо находили профилирование и оптимизацию пугающими или медленными с другими инструментами, то JustTrace , возможно, стоит посмотреть.
Текущая версия SharpDevelop (3.1.1) имеет хороший встроенный профилировщик. Он довольно быстрый и очень хорошо интегрируется в IDE SharpDevelop и его бегунок NUnit. Результаты отображаются в гибком стиле дерева / списка (используйте LINQ, чтобы создать свой собственный выбор). Двойной щелчок по отображаемому методу позволяет перейти непосредственно к исходному коду.
Сам не пробовал, но может быть dotTrace ? Их приложение ReSharper, безусловно, хорошее. Может быть, dotTrace тоже :))
Я работал с JetBrains dotTrace для WinForms и консольных приложений (еще не тестировался на ASP.net), и он работает довольно хорошо:
Недавно они также добавили " Персональная лицензия », которая значительно дешевле корпоративной. Тем не менее, если кто-то еще знает более дешевые или даже бесплатные, я бы тоже хотел услышать: -)
Другие рассматривали профилирование производительности, но в отношении профилирования памяти В настоящее время я оцениваю Scitech .NET Memory Profiler 3.1 и ANTS Memory Profiler 5.1 (текущие версии по состоянию на сентябрь 2009 г.). Я пробовал JetBrains один год или два назад, и он был не так хорош, как ANTS (для профилирования памяти), поэтому я не потрудился на этот раз. Из чтения веб-сайтов кажется, что он не обладает теми же функциями профилирования памяти , что и два других.
Как ANTS, так и профилировщик памяти Scitech имеют функции, которых нет у другого, поэтому наилучшее будет зависеть от ваших предпочтений. Вообще говоря, Scitech предоставляет более подробную информацию, в то время как ANTS действительно невероятно распознает протекающий объект. В целом, я предпочитаю ANTS, потому что он очень быстро выявляет возможные утечки.
Вот основные плюсы и минусы каждого из моего опыта:
Общие черты ANTS и Scitech .NET Memory Profiler
ANTS
Scitech .NET Memory Profiler
Вкратце, я думаю, что ANTS помогает вам быстрее находить утечки, в то время как Scitech предоставляет немного больше информации об общей производительности памяти вашего приложения и отдельных объектах, когда вы знаете, на что смотреть (например, трассировка стека при создании). ). Если бы в ANTS была добавлена трассировка стека и отслеживание неразмещенных одноразовых объектов, я бы не увидел необходимости использовать что-либо еще.