Jetbrains dottrace что это
- встроенный в Visual Studio 2010 (начиная с Premium редакции) профайлер (MSDN, блог); от RedGate; от JetBrains; от EQATEC.
- public partial class Default : System.Web.UI. Page
- protected void Page_Load( object sender, EventArgs e)
- SampleBadMethod1();
- SampleBadMethod2();
- >
- private void SampleBadMethod1()
- for ( int i = 0; i < 100; i++)
- SampleBadSubMethod1();
- >
- >
- private void SampleBadSubMethod1()
- Thread.Sleep(10);
- >
- private void SampleBadMethod2()
- for ( int i = 0; i < 10000; i++)
- SampleBadSubMethod2();
- >
- >
- private void SampleBadSubMethod2()
- Thread.Sleep(1);
- >
- >
Небольшое лирическое отступление. Сначала хотел выбрать реальное приложение для профайлинга. Выбор пал на Tailspin Spyworks, которое используется в качестве steb-by-step руководства. Казалось бы, руководство для новичков должно быть так отполировано, чтобы сразу заинтересовать разработчика, научить каким-то правильным вещам. И что я там увидел? Кривоватую вёрстку, смесь бизнес-логики и разметки, неоптимальные запросы к БД, select * даже если тянутся 1-2 поля… Выполнять все оптимизации 4 раза (для 4-х профайлеров) оказалось очень трудоёмко, поэтому за 3 минуты было написано используемое в тестах приложение. Если кому-то интересно, в будущих статьях можно будет разобрать по косточкам Tailspin Spyworks.
Довольно лирики, запускаем профайлеры.
Visual Studio Perfomance Profiler
После окончания загрузки страницы в браузере, нажимаем Stop и получаем результат:
Не будем останавливаться на описании профайлера, это достаточно хорошо сделано тут, тут и тут.
Вот как выглядит экран статистики по методам:
Теперь нужно оптимизировать критичные участки кода SampleBadMethod1 и SampleBadMethod2. В качестве «оптимизации» сокращаем количество итераций в цикле (например, со 100 до 50 и c 10000 до 1000).
Получаем ещё раз результат и через пункт меню Analyze->Compare Perfomance Reports сравниваем результат:
Ну что же, мы молодцы, получилось ускорить наше приложение.
Повторим те же действия с другими профайлерами.
ANTS Profiler
При создании новой сессии профайлинга появляется следующее окно:
Подробно рассматривать назначение и функции областей экрана сейчас не буду (это тема отдельной статьи), кратко скажу, что в верхней части видно временную шкалу с загрузкой ЦП (или любым другим показателем, который вы можете выбрать сами), в центре дерево методов со статистикой выполнения по времени и количеству вызовов, в нижней части просмотр исходного кода методов (если код доступен).
Здесь есть некоторая странность: мы видим, что суммарное время выполнения метода SampleBadSubMethod2 равно 14 мс, хотя внутри него задержка на 1 мс и он вызывается 10000 раз. Возможно, ANTS как-то некорректно обрабатывает метод Thread.Sleep.
Теперь снова «оптимизируем» приложение, запускаем профайлер, получаем результат и… не можем сравнить средствами ANTS… В FAQ на сайте предлагают запустить ещё один профайлер и переключаться между ними, сравнивая результат. Ну, спасибо, что ещё сказать :)
dotTrace
При выборе File->Profile появляется окно:
Выбираем тип приложения, задаём настройки и Run!
После запуска профайлинга появляется небольшое окно, с помощью которого можно получить результат (Get Snapshot) или завершить профайлинг.
После получения результата увидим следующее окно:
Здесь видим дерево методов с процентами и временем выполнения. В правой части можно посмотреть исходник того или иного метода.
Оптимизируем приложение, получаем результат и сравниваем с первоначальным:
Ну что ж, оптимизация удалась.
EQATEC Profiler
Запускаем профайлер, видим окно:
Здесь нужно выбрать путь до папки bin приложения, выбрать сборки, которые хотим исследовать на нажать Build.
Затем запускаем свой любимый браузер и загружаем страницу приложения. Если всё нормально, то в логе появится надпись Profiled appication xxx started и станут активными кнопки «Take snapshot» и «Reset counters»
Далее нажимаем «Take snapshot»:
А вот и наш snapshot:
Видим статистику вызовов, а также представление методов в виде блоков (в нижней части). Эти блоки кликабельны, т.е. можно переходить по иерархии вызовов вниз/вверх.
Теперь в очередной раз оптимизируем приложение и сравниваем результат:
Мы опять молодцы, ускорили приложение во много раз.
На этом всё, посмотрим на сводную таблицу возможностей представленных профайлеров
Summary
VS Profiler | ANTS | dotTrace | EQATEC | |
---|---|---|---|---|
Показ относительных результатов выполнения методов (в %) | ||||
Показ абсолютных результатов выполнения методов (в секундах, мс и т.п.) | ||||
Показ числа вызовов методов | ||||
Просмотр исходников методов | ||||
Сравнение результатов двух замеров | ||||
Цена | > 5000$ 1) | от 395$ 2) | от 199$ 3) | бесплатно 4) |
1) в составе VS Premium и выше
2) зависит от редакции
3) для open source проектов бесплатен
4) ограничение на 10 одновременно загружаемых dll, за $ с меньшими ограничениями
Теперь рассмотрим замеченные мной достоинства и недостатки каждого профайлера в отдельности, не указанные в сравнительной таблице.
VS Profiler
ANTS Profiler
самая подробная информация по вызовам методов, куча счетчиков производительности
в режиме профайла SQL думает, что кроме ./SQLEXPRESS серверов больше не существует :)
нет сравнения двух результатов замеров
dotTrace
больше всех понравилась документация
в режиме просмотра дерева какая-то каша из цифр, названий методов, сборок
не запустился в режиме IIS Application, хотя всё делал по хорошей документации.
EQATEC
маленький и быстрый, подходит, если не нужно смотреть производительность построчно и не нужны исходники
данный минус — следствие плюса: меньше, чем у других конкурентов, возможностей.
Итак, сделаю, возможно, субъективный вывод. Мой выбор — EQATEC Profiler, для многих задач оценки производительности его более чем достаточно. Если у вас есть возможность использования VS Premium или Ultimate, встроенный профайлер достаточно неплохой продукт. В этом случае необходимость в покупке других профайлеров отпадёт. Из оставшихся двух профайлеров своей мощью поражает ANTS профайлер, хотя, конечно, почему нет сравнения результатов — непонятно. У dotTrace обилие вариантов приобретения с большим количеством возможностей самого профайлера.
Local or remote profiling
Most of the time, you're profiling local applications. However, what if you're faced with a lagging application on a remote web server?
dotTrace can connect to a remote machine to profile a standalone or web application, or a Windows service. You don't even have to install dotTrace there — just copy a few files.
Углубленная интеграция с Visual Studio и Rider
dotTrace тесно интегрируется с Visual Studio и JetBrains Rider, помогая вам запускать профилирование разрабатываемых приложений, не покидая IDE. Кроме того, теперь вы можете наблюдать и анализировать результаты хронологического профилирования непосредственно в IDE. Обнаружили в дереве вызовов ресурсоемкий вызов? У вас есть возможность моментально перейти к объявлению метода.
Интеграция с Visual Studio и JetBrains Rider делает профилирование практически бесшовным процессом, поскольку вам больше не нужно переключаться между IDE и профилировщиком.
Profile async calls
dotTrace allows you to easily analyse asynchronous code: All "parts" of an async call are shown in one place, so that you don't need to search for them in different call stacks.
Estimation of performance gains
Sometimes, after hours of optimizing a time-consuming function, developers are forced to start profiling from scratch to see if their optimization actually worked.
This is not a problem anymore. dotTrace can recalculate all function timings in a snapshot instantly, based on a time adjustment that you set — without reprofiling your application. It's like asking the profiler: "what if I optimize this function by 40%?" Just specify the new time for a function or for all functions in a particular class. Time values for the entire snapshots will be recalculated.
Анализ медленных SQL-запросов
Используйте хронологическое профилирование, чтобы проанализировать влияние определенных запросов на производительность приложения. Фильтр SQL-запросы показывает все SQL-запросы и SQL-подключения вместе со статистикой по их производительности.
Содержимое запросов можно открыть в отдельном окне для дальнейшего анализа. Вы можете выбрать один или несколько запросов в качестве фильтров для всех остальных данных, после чего перейти к изучению методов, инициировавших запросы.
Оставим неэффективные SQL-запросы в прошлом!
Profiling SDK
Profiling SDK позволяет контролировать сеанс профилирования непосредственно из кода: автоматически запускать или останавливать сбор данных профилирования, сохранять полученные снэпшоты и так далее.
Это делает возможными два ценных сценария. Во-первых, вы можете использовать SDK, чтобы сузить охват профилирования и выбрать, какие части кода следует профилировать. Второй сценарий — самопрофилируемые приложения: вы можете выполнять сбор статистики, показывающей, как ваше приложение работает на компьютерах конечных пользователей.
Comparing snapshots
dotTrace is able to compare any two performance snapshots of the same application. It generates a comparison snapshot which shows the difference in the number of calls and times consumed by each function. Comparison snapshots can be viewed and analyzed the same way as regular performance snapshots.
Works on Windows, macOS, and Linux
Хронологический режим и другие режимы профилирования
В отличие от «классического» профилирования производительности, которое позволяет измерять только время вызова метода, хронологический режим показывает, как вызовы распределены по времени.
Благодаря привязке данных о вызовах методов к хронологической шкале этот режим профилирования позволяет получить более углубленную информацию, если сравнивать его с простым подходом определения самого медленного метода: хронологический режим позволяет диагностировать проблемы с производительностью там, где имеет значение порядок событий, например при зависании пользовательского интерфейса, чрезмерной сборке мусора, неравномерном распределении рабочей нагрузки, неоптимизированном файловом доступе и во многих других ситуациях.
При этом в dotTrace сохранены и традиционные режимы профилирования. Профилирование в режиме выборка является самым простым способом оценить общую производительность приложения, а режимы трассировка и построчно идеально подходят для получения сведений о внутренней работе определенного алгоритма.
Estimation of performance gains
Sometimes, after hours of optimizing a time-consuming function, developers have to start profiling from scratch to see if their optimization actually worked.
This is not a problem with dotTrace. The profiler can recalculate all function timings in a snapshot instantly, based on a time adjustment that you set — without reprofiling your application. It's like asking the profiler: "what if I optimize this function by 40%?" Just specify the new time for a function or for all functions in a particular class. Time values for the entire snapshots will be recalculated.
New profiling experience
You can slice and dice profiling data using filters, the call tree, or diagrams. By applying filters, you get a set of time intervals selected by a specific condition. The way it works is very similar to executing a query on a database to get exactly the data you need.
For example, to find out whether a UI freeze is caused by blocking garbage collection, you can ask dotTrace to select all time intervals on the main thread where the UI freeze occurred and blocking GC was performed. As complex as this may sound, this filter combination is in fact toggled in just two clicks.
Profile static methods
dotTrace allows you to instantly profile any static method in your code. Simply place the caret on the method, press Alt+Enter , and select Debug | Profile in the action list.
Just imagine what this feature can do. You can profile any part of your code in place, right after you've written it! No need to build your solution, run it under the profiler, perform a usage scenario that runs your new code, etc.
Deep Visual Studio integration
You can launch profiling of your applications right from Visual Studio 2010, 2012, 2013, 2015, 2017, 2019, and 2022. If your solution is opened in Visual Studio during your profiling session, you can instantly navigate from dotTrace code preview area to the corresponding code file in Visual Studio.
Профилирование по-новому
Вы можете наблюдать плоскостные и объемные срезы данных профилирования с помощью фильтров, дерева вызовов и диаграмм. Применяя фильтры, вы получаете набор временных интервалов, отобранных по определенному условию. Это похоже на отправку запроса в базу данных с целью получить конкретно определенные данные.
Например, чтобы узнать, было ли зависание пользовательского интерфейса вызвано блокирующим процессом сборки мусора, вы можете попросить dotTrace выбрать в главном потоке все временные интервалы, когда пользовательский интерфейс не реагировал и выполнялась блокирующая сборка мусора. Как бы сложно это ни звучало, в действительности данная комбинация фильтров вызывается всего двумя кликами.
Сравнение снэпшотов
dotTrace позволяет сравнивать два любых снэпшота производительности, относящихся к одному и тому же приложению. Профилировщик создает сравнительный снэпшот, который показывает разницу в числе вызовов и времени, затраченном каждой функцией. Сравнительные снэпшоты можно просматривать и анализировать так же, как и обычные снэпшоты производительности.
Поддержка непрерывной интеграции
В комплекте с dotTrace поставляются инструменты командной строки, которые можно использовать для автоматизации сбора снэпшотов профилирования, что крайне важно, если вы хотите встроить профилирование в состав своих сборок непрерывной интеграции.
Если в качестве CI-сервера вы используете JetBrains TeamCity, не забудьте установить плагин dotTrace для TeamCity. Плагин помогает предотвратить снижение производительности приложений, выполняя профилирование тестов интеграции. Все, что необходимо сделать, — это установить порог времени выполнения теста, и если оно будет превышено, плагин автоматически создаст снэпшот производительности и завершит тест со статусом «неудача».
Versatile profiling modes
Depending on your needs, you can choose between several modes of performance profiling: timeline, sampling, tracing, and line-by-line.
Unlike "classic" performance profiling that only lets you measure method call execution time, timeline profiling reveals how calls are distributed in time.
By virtue of binding method call data to a timeline, this profiling mode goes beyond plainly detecting the slowest method: it allows diagnosing performance issues where the order of events matters, such as UI freezes, excessive garbage collection, uneven workload distribution, inefficient file I/O, and more.
However, traditional profiling modes are still available in dotTrace. Sampling profiling is the easiest way to evaluate overall application performance, whereas tracing and line-by-line profiling modes are ideal when you need details on how a particular algorithm works inside.
Connect to running applications
dotTrace can be attached to a running application for profiling and detached as soon as profiling data has been captured.
This minimizes overhead imposed by running an application under the profiler. More importantly, it **enables investigating performance issues in production environments **where you just can't afford to restart an application every time you need to profile it.
Deep Visual Studio / Rider Integration
dotTrace is deeply integrated with Visual Studio / JetBrains Rider, helping you start profiling of the applications you currently develop without leaving the IDE. Even more, you can now view and analyze timeline profiling results right in the IDE. Found a hot spot call in the call tree? Instantly navigate to the method declaration!
Visual Studio / JetBrains Rider integration makes profiling experience virtually seamless as you no longer have to switch between the IDE and the profiler.
Подключение к работающим приложениям
dotTrace можно подключать к работающим приложениям и отключать по окончании сбора данных профилирования.
Это сводит к минимуму накладные расходы, вызванные запуском приложения под профилировщиком. Что более важно, это позволяет выявлять причины падения производительности в эксплуатационном окружении, где недопустимо перезапускать приложение каждый раз, когда требуется выполнить профилирование.
Timeline and more profiling modes
Unlike "classic" performance profiling that only lets you measure method call execution time, timeline profiling reveals how calls are distributed in time.
By virtue of binding method call data to a timeline, this profiling mode goes beyond plainly detecting the slowest method: it allows diagnosing performance issues where the order of events matters, such as UI freezes, excessive garbage collection, uneven workload distribution, inefficient file I/O, and more.
However, traditional profiling modes are still available in dotTrace. Sampling profiling is the easiest way to evaluate overall application performance, whereas tracing and line-by-line profiling modes are ideal when you need details on how a particular algorithm works inside.
Comparing snapshots
dotTrace is able to compare any two performance snapshots of the same application. It generates a comparison snapshot which shows the difference in the number of calls and times consumed by each function. Comparison snapshots can be viewed and analyzed the same way as regular performance snapshots.
1.2 Установка
Каждый пользователь может бесплатно оценить и использовать его в течение 10 дней. Конечно, вы можете использовать некоторые исправления или инструменты активации. Процесс здесь подробно не описан, просто обратите внимание, что (WebInstaller) может выбрать установку, которая вам нужна во время установки. Пропустите пропуск, если вам это не нужно.
Вы также можете выбрать «Интеграция Visual Studio» во время установки, которая будет интегрироваться с VS, и вы можете быстро перейти к соответствующей строке кода при анализе кода.
Profile static methods
dotTrace allows you to instantly profile any static method in your code. You can profile any part of your code in place, right after you've written it! No need to build your solution, run it under the profiler, perform a usage scenario that runs your new code, etc.
Analyze slow SQL queries
Use timeline profiling to analyze how each particular query affects application performance. The SQL Queries filter shows all SQL queries and SQL connections along with their performance statistics.
For your convenience, query contents can be opened in a separate window for further analysis. You can still filter all data by choosing one or multiple queries and investigate the methods they were executed from.
No more ineffective SQL queries!
Continuous Integration support
dotTrace comes with command-line profiling tools that can be used to automate gathering profiling snapshots, which is essential if you want to make profiling a part of your Continuous Integration builds.
If you're using JetBrains TeamCity as your CI server, make sure to install dotTrace plugin to TeamCity. The plugin helps you prevent application performance regression by profiling integration tests. All you need is set a threshold for test execution time, and if it's exceeded, the plugin will automatically take performance snapshot and fail the test.
1. Установка и загрузка
Процедура установки относительно проста: зайдите на официальный сайт Jetbrains, найдите dotTrace и нажмите «Загрузить».
Profile async calls
dotTrace allows you to easily analyze asynchronous code: All "parts" of an async call are shown in one place so that you don't need to search for them in different call stacks.
2.1 Получить информацию о снимке
Конечно, вы также можете выбрать «Дополнительно» для настройки таких параметров, как параметры запуска, а затем нажать «Выполнить», чтобы начать анализ.
Здесь в правом нижнем углу Get Snapshot and Wait После нажатия на него вы получите файл снимка. Конечно, не паникуйте сейчас, давайте сначала протестируем интерфейс, который мы хотим протестировать.
Например, у меня есть метод TestMethod, код выглядит следующим образом:
Теперь мы вызываем этот интерфейс через SwaggerUI и посмотрим, сколько времени это займет.
Видно, что в среднем это занимает 300 мс, теперь мы нажимаем кнопки GetSnapshot и Wait, появляется окно анализа, и мы можем продолжить анализ, снова нажав кнопку «Пуск».
Профилирование асинхронных вызовов
dotTrace позволяет с легкостью анализировать асинхронный код: все части async -вызова показаны в одном месте, поэтому вам не нужно разыскивать их в разных стеках вызовов.
Connect to running applications
dotTrace can be attached to a running application for profiling, and detached as soon as profiling data has been captured.
This minimizes overhead imposed by running an application under the profiler. More importantly, it enables investigating performance issues in production environments where you just can't afford to restart an application every time you need to profile it.
Profile remote applications
Most of the time, you need to profile applications running locally. However, what if you're faced with a lagging application on a remote web server?
Works on Windows, macOS, and Linux
Работает под Windows, macOS и Linux
Profile unit tests
If you have a Visual Studio + ReSharper* bundle or JetBrains Rider**, you can easily start profiling unit tests from the code editor or a unit test runner.
* Even if you don't have ReSharper installed, you can still profile a native unit test runner provided by NUnit, MSTest, or xUnit.
** Profiling features are available only for the owners of 'ReSharper Ultimate + Rider' or 'All Products Pack' licenses.
0. Фон
При разработке проекта ранняя стадия может быть главным образом для обеспечения выполнения задач, а оптимизация производительности в основном выполняется после завершения разработки. Возможно, вы обнаружите, что время выполнения кода некоторых интерфейсов слишком велико во время теста, но вы не знаете, в настоящее время вам нужен инструмент анализа производительности, который поможет вам в устранении неполадок.
Общий анализ производительности может быть выполнен с помощью мощных инструментов тестирования производительности Visual Studio, но эти функции включены только в Enterprise Edition. В настоящее время мы можем использовать аналитическое ведро JetBrains для выполнения этой операции, которое включает анализ памяти (dotMemory) и анализ производительности (dotTrace). Фактически его dotCover (модульный тест) также очень прост в использовании.
2.2 Анализ кода
2.2.1 Обзор
Интерфейс анализа трассировки относительно прост: есть вкладка «Все вызовы» и вкладка «Обзор». Сначала рассмотрим окно обзора.
Можно видеть, что он идентифицировал некоторые места, где пользовательский код имеет самый длинный цикл выполнения.Во-вторых, гистограмма также интуитивно отражает самую длинную трудоемкую классификацию кода.
В правой части перечислены некоторые снимки и информация о среде выполнения для справки пользователей.
2.2.2 Дерево потоков
Основная роль этого окна состоит в том, чтобы проанализировать все действия потока, которые происходят в приложении.Иконка, и тема финализатора имеетВсе остальные значки являются рабочими потоками внутри пула потоков.
Здесь мы возьмем основной поток в качестве примера для анализа значения, выраженного его конкретным содержанием.
Main: сокращение от метода без пространства имен.
99,99%: представляет процент времени выполнения этого метода для всего потока. Это означает, что метод Main занимает 99,99% времени выполнения основного потока.
523 732 мсек: общее время выполнения метода и подметодов.
1 вызов: количество вызовов метода в стеке.
XXX.Web.Host.Startup.Program.Main (string []): полное имя вызываемого метода,
2.2.3 Дерево вызовов
Как правило, мы будем использовать эту страницу немного больше, на этой странице будут показаны все методы, вызываемые во всех потоках. Каждый корневой узел представляет корневую функцию, выполняемую каждым потоком, и каждый узел ниже представляет соответствующую информацию анализа производительности подфункций, вызываемых в его корневой функции.
Так как же нам быстро найти интерфейс, который мы только что протестировали?
Нажмите Ctrl + F, появится окно поиска, введите имя метода интерфейса, которое мы написали, и нажмите Enter, чтобы быстро найти его.
Тогда мы увидим следующее:
Расширяя узел, мы можем узнать наиболее трудоемкий метод, который является методом GetAll. При щелчке по узлу правая сторона также будет расположена в соответствующей позиции кода.
Здесь вы можете видеть, что весь метод GetAll занимает 1015 мс. Почему это так? Вы видите, что на правой стороне 8 звонков, на этот раз общее время 8 звонков.
Щелкните правой кнопкой мыши узел, и вы можете увидеть среднее время выполнения метода через Свойства:
Видно, что это заняло всего 8,3 мкс, что указывает на то, что реальное медленное выполнение все еще находится на более глубоком уровне, и здесь не будет отслеживаться. Если вам нужны более подробные отчеты о производительности, вы можете использовать режим трассировки вместо Line-by режим для анализа.
2.2.4 Простой список
Показывает список всех вызванных методов мозаичным способом, что позволяет анализировать конкретный код.
Profiling SDK
Profiling SDK allows you to control a profiling session right from your code: programmatically start and stop collecting profiling data, save collected snapshots and so on.
This enables two valuable usage scenarios. First, you can use the SDK to narrow down the profiling scope and choose which parts of your code to profile. The second usage scenario is self-profiled applications: you can collect statistics showing how your application behaves on end-user machines.
Continuous Integration support
dotTrace comes with command-line profiling tools that can be used to automate gathering profiling snapshots, which is essential if you want to make profiling a part of your Continuous Integration builds.
If you're using JetBrains TeamCity as your CI server, make sure to install dotTrace plugin to TeamCity. The plugin helps you prevent application performance regression by profiling integration tests. All you need is set a threshold for test execution time, and if it's exceeded, the plugin will automatically take performance snapshot and fail the test.
Оценка прироста производительности
Бывает так, что, потратив часы на оптимизацию ресурсоемкой функции, разработчики вынуждены начинать профилирование с нуля, чтобы увидеть, есть ли эффект от их оптимизации.
С dotTrace это не проблема. Профилировщик может моментально пересчитать тайминги всех функций в снэпшоте на основании заданного вами значения корректировки времени, при этом перепрофилировать приложение не требуется. Вы словно задаете профилировщику вопрос «что будет, если я оптимизирую эту функцию на 40%?». Просто укажите новое время функции или всех функций определенного класса. Пересчет показателей времени будет осуществлен во всем снэпшоте.
Профилирование статических методов
dotTrace позволяет моментально профилировать любой статический метод из вашего кода. Просто переместите курсор на метод, нажмите Alt+Ввод и выберите Отладка | Профилирование в списке действий.
Просто представьте, какие возможности открывает эта функциональность — вы можете профилировать любую часть своего кода там же, где вы его написали! Не нужно выполнять сборку решения, запускать его в профилировщике, выполнять набор действий, позволяющих запустить ваш новый код, и т. п.
Профилирование удаленных приложений
Большую часть времени профилировать приходится локально запущенные приложения. Однако что делать, если медленно работающее приложение находится на удаленном веб-сервере?
dotTrace позволяет подключаться к удаленному компьютеру для профилирования автономного приложения, веб-приложения или службы Windows. Вам даже не придется устанавливать dotTrace на удаленный компьютер: просто скопируйте несколько файлов.
Profile unit tests
If you have ReSharper installed in Visual Studio, you can easily start profiling unit tests from the code editor or ReSharper's unit test runner.
Even if you don't have ReSharper installed, you can still profile a native unit test runner provided by NUnit, MSTest, or xUnit.
Use timeline profiling to analyze how each particular query affects application performance and why this query is running slow.
Profiling SDK
Profiling SDK allows you to control a profiling session right from your code: programmatically start and stop collecting profiling data, save collected snapshots and so on.
This enables two valuable usage scenarios. First, you can use the SDK to narrow down the profiling scope and choose which parts of your code to profile. The second usage scenario is self-profiled applications: you can collect statistics showing how your application behaves on end-user machines.
Профилирование юнит-тестов
Если у вас есть пакет Visual Studio + ReSharper* или JetBrains Rider**, вы можете с легкостью запускать профилирование юнит-тестов из редактора кода или инструмента для запуска юнит-тестов.
* Даже если ReSharper не установлен, вы все равно можете профилировать нативный инструмент для запуска юнит-тестов, например от NUnit, MSTest или xUnit.
** Функциональность профилирования доступна только держателям лицензий ReSharper Ultimate + Rider или All Products Pack.
2. Использование и анализ
Как правило, мы используем Tracing Чтобы проанализировать производительность кода, потому что, как правило, необходимо проверить конкретное время вызова каждого метода. Я буду использовать пример интерфейса в качестве примера, чтобы увидеть, как устранить неполадки медленного вызова.
Читайте также: