Функциональность dotTrace

dotTrace — это профилировщик для .NET-приложений, позволяющий быстро и точно выявлять и устранять проблемы производительности, не покидая Visual Studio или JetBrains Rider. Более подробная информация приведена ниже.

Некоторые из поддерживаемых типов приложений

Профилирование всех типов .NET-приложений

dotTrace помогает находить узкие места в производительности ряда .NET-приложений, включая десктопные приложения, приложения .NET Core и приложения ASP.NET, размещенные на веб-серверах IIS или IIS Express, приложения Mono и Unity, сервисы WCF, службы Windows, приложения универсальной платформы Windows и юнит-тесты.

Поддержка Windows, macOS и Linux

Работает под Windows, macOS и Linux

dotTrace поддерживает проекты, разрабатываемые под .NET Framework 1.0–4.7, .NET Core 1.0–3.0, Mono 5.10 и выше, Unity 2018.3 и выше. В macOS и Linux dotTrace можно использовать только в составе JetBrains Rider или в качестве консольного профилировщика.

Режимы профилирования dotTrace: хронологически, выборка, трассировка и построчно

Хронологический режим и другие режимы профилирования

В отличие от «классического» профилирования производительности, которое позволяет измерять только время вызова метода, хронологический режим показывает, как вызовы распределены по времени.

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

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

Хронологический режим профилирования в действии

Профилирование по-новому

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

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

Интегрированный в Visual Studio инструмент хронологического просмотра. Переход к объявлению метода

Углубленная интеграция с Visual Studio и Rider

dotTrace тесно интегрируется с Visual Studio и JetBrains Rider, помогая вам запускать профилирование разрабатываемых приложений, не покидая IDE. Кроме того, теперь вы можете наблюдать и анализировать результаты хронологического профилирования непосредственно в IDE. Обнаружили в дереве вызовов ресурсоемкий вызов? У вас есть возможность моментально перейти к объявлению метода.

Интеграция с Visual Studio и JetBrains Rider делает профилирование практически бесшовным процессом, поскольку вам больше не нужно переключаться между IDE и профилировщиком.

Профилирование асинхронных вызовов

Профилирование асинхронных вызовов

dotTrace позволяет с легкостью анализировать асинхронный код: все части async-вызова показаны в одном месте, поэтому вам не нужно разыскивать их в разных стеках вызовов.

Профилирование статических методов прямо в Visual Studio

Профилирование статических методов

dotTrace позволяет моментально профилировать любой статический метод из вашего кода. Просто переместите курсор на метод, нажмите Alt+Ввод и выберите Отладка | Профилирование в списке действий.

Просто представьте, какие возможности открывает эта функциональность — вы можете профилировать любую часть своего кода там же, где вы его написали! Не нужно выполнять сборку решения, запускать его в профилировщике, выполнять набор действий, позволяющих запустить ваш новый код, и т. п.

Запуск профилирования на удаленном компьютере

Профилирование удаленных приложений

Большую часть времени профилировать приходится локально запущенные приложения. Однако что делать, если медленно работающее приложение находится на удаленном веб-сервере?

dotTrace позволяет подключаться к удаленному компьютеру для профилирования автономного приложения, веб-приложения или службы Windows. Вам даже не придется устанавливать dotTrace на удаленный компьютер: просто скопируйте несколько файлов.

Подключение профилировщика к работающему процессу

Подключение к работающим приложениям

dotTrace можно подключать к работающим приложениям и отключать по окончании сбора данных профилирования.

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

Профилирование юнит-тестов

Профилирование юнит-тестов

Если у вас есть пакет Visual Studio + ReSharper* или JetBrains Rider**, вы можете с легкостью запускать профилирование юнит-тестов из редактора кода или инструмента для запуска юнит-тестов.

* Даже если ReSharper не установлен, вы все равно можете профилировать нативный инструмент для запуска юнит-тестов, например от NUnit, MSTest или xUnit.

** Функциональность профилирования доступна только держателям лицензий ReSharper Ultimate + Rider или All Products Pack.

Анализ входящих HTTP-запросов

Анализ медленных HTTP-запросов

В ходе анализа снэпшотов хронологического профилирования вы можете (с помощью фильтра) выделить только те временные интервалы, когда ваше веб-приложение обрабатывало входящие HTTP-запросы. Получите конкретные данные, выявите медленно выполняющиеся методы и определите истинную причину проблемы. Заставьте свои веб-приложения работать быстрее с помощью хронологического профилирования.

Анализ SQL-запросов

Анализ медленных SQL-запросов

Используйте хронологическое профилирование, чтобы проанализировать влияние определенных запросов на производительность приложения. Фильтр SQL-запросы показывает все SQL-запросы и SQL-подключения вместе со статистикой по их производительности.

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

Оставим неэффективные SQL-запросы в прошлом!

Использование API профилирования dotTrace

Profiling SDK

Profiling SDK позволяет контролировать сеанс профилирования непосредственно из кода: автоматически запускать или останавливать сбор данных профилирования, сохранять полученные снэпшоты и так далее.

Это делает возможными два ценных сценария. Во-первых, вы можете использовать SDK, чтобы сузить охват профилирования и выбрать, какие части кода следует профилировать. Второй сценарий — самопрофилируемые приложения: вы можете выполнять сбор статистики, показывающей, как ваше приложение работает на компьютерах конечных пользователей.

Запуск этапа сборки «юнит-тестирование» в профилировщике

Поддержка непрерывной интеграции

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

Если в качестве CI-сервера вы используете JetBrains TeamCity, не забудьте установить плагин dotTrace для TeamCity. Плагин помогает предотвратить снижение производительности приложений, выполняя профилирование тестов интеграции. Все, что необходимо сделать, — это установить порог времени выполнения теста, и если оно будет превышено, плагин автоматически создаст снэпшот производительности и завершит тест со статусом «неудача».

Моментальная оценка (корректировка времени)

Оценка прироста производительности

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

С dotTrace это не проблема. Профилировщик может моментально пересчитать тайминги всех функций в снэпшоте на основании заданного вами значения корректировки времени, при этом перепрофилировать приложение не требуется. Вы словно задаете профилировщику вопрос «что будет, если я оптимизирую эту функцию на 40%?». Просто укажите новое время функции или всех функций определенного класса. Пересчет показателей времени будет осуществлен во всем снэпшоте.

Сравнение снэпшотов

Сравнение снэпшотов

dotTrace позволяет сравнивать два любых снэпшота производительности, относящихся к одному и тому же приложению. Профилировщик создает сравнительный снэпшот, который показывает разницу в числе вызовов и времени, затраченном каждой функцией. Сравнительные снэпшоты можно просматривать и анализировать так же, как и обычные снэпшоты производительности.

Скачайте dotTrace

Бесплатный пробный доступ на 10 дней фактического использования