Какое средство производительности следует использовать? (C#, Visual Basic, C++, F#)
Visual Studio предоставляет различные средства профилирования, помогающие диагностировать различные виды проблем с производительностью приложений в зависимости от типа приложения. В этой статье мы предоставляем сведения, которые помогут вам найти подходящее средство для вашего сценария и типа приложения.
Общий подход к оптимизации кода с использованием инструментов профилирования см. в исследовании: руководство для начинающих по оптимизации кода.
Какое средство следует использовать?
В следующей таблице перечислены различные предложения Visual Studio и общие сценарии выбора средства.
Инструмент для повышения производительности | Описание | Когда использовать средство? |
---|---|---|
использование процессора | Показывает, где ЦП тратит время. | • Начало исследования общих проблем с производительностью. • Изучение высокого использования ЦП сервера. • Исследование сценариев DevOps, например, когда заказы не проходят через веб-сайт розничной торговли. • Оптимизация использования ЦП. • Исследование задержки в вызовах API. |
графа пламени | Просмотр в инструменте использования ЦП, который предоставляет альтернативную визуализацию дерева вызовов. | Изучение задержки в вызовах API |
горячий путь | Посмотрите в инструменте использования ЦП, который показывает, где ЦП тратил большую часть времени в вашем приложении. | Изучение задержки в вызовах API |
использование памяти | Отображает память приложения для поиска таких проблем, как утечка памяти. | • Оптимизация использования памяти • Исследование зависания пользовательского интерфейса • Исследование предполагаемой утечки памяти (родной код) |
выделение объектов .NET | Показывает, где выделены объекты .NET и сведения о сборке мусора. | • Оптимизация использования памяти .NET • Анализ сборки мусора |
инструментирования | Показывает точное количество вызовов и время вызова. | • Вам нужен инструмент для использования ЦП, но требуется точное количество вызовов и время, затраченное на функции на основе реального времени. • Вы хотите увидеть время блокировок, например, время, затрачиваемое на ожидание блокировок. • Примечание. Это средство создает дополнительную нагрузку. |
Файловые операции ввода-вывода | Показывает операции ввода-вывода файла и сколько времени они занимают и сколько данных они обрабатывают. | Изучение замораживания пользовательского интерфейса |
PerfTips | Показывает оперативную оценку сведений о производительности во время работы с кодом. | При отладке необходимо просмотреть истекшее время между предыдущей операцией шага (или точкой останова) до текущего шага или точки останова. |
средства просмотра событий | Отображает HTTP-запросы, сообщения журнала и исключения. | • Исследование задержки в вызовах API • Исследование медленного приложения, работающего на удаленном веб-сервере |
.NET Асинхронный | Показывает использование async/await в приложениях .NET. | Изучите предполагаемую проблему производительности с асинхронным кодом. |
счетчики .NET | Динамический отчет для счетчиков .NET. | • Начало исследования общих проблем с производительностью. • Требуется трассировка для метрик на основе счетчиков .NET, таких как исключения в секунду, сборка мусора и использование ЦП. |
база данных | Показывает производительность запросов к базе данных. | Изучите производительность запросов базы данных, использующих ADO.NET или Entity Framework Core. |
использование GPU | Показывает высокоуровневое использование оборудования приложения Direct3D. | Проверьте, привязана ли производительность приложения к ЦП или GPU. |
График приложения | Показывает производительность пользовательского интерфейса для приложений XAML. | Изучение производительности пользовательского интерфейса в приложениях XAML, таких как время, затраченное на отрисовку кадров. |
IntelliTrace | Средство отладчика, позволяющее записывать события и проверять состояние приложения в различных точках выполнения. | Вы хотите, чтобы средство проверялось состояние приложения в различных точках, а не только текущее состояние приложения. |
Какие инструменты поддерживаются для моего проекта?
В следующей таблице перечислены различные предложения Visual Studio и различные типы проектов, с которыми их можно использовать:
Инструмент для повышения производительности | .СЕТЬ | C/C++ | UWP | ASP.NET/ASP.NET Core |
---|---|---|---|---|
Загрузка процессора | да | да | да | да |
Использование памяти | да | да | да | да |
.NET выделение объектов | да | Нет | да | да |
инструментирования | да | да | да | да |
Файловые операции ввода-вывода | да | да | да | да |
PerfTips | да | да | да | да |
средства просмотра событий | да | да | да | да |
Асинхронный .NET | да | Нет | да | да |
счетчики .NET | Да (только .NET Core/5+ ) | Нет | Нет | Да (только ASP.NET Core) |
база данных | Да (только .NET Core/5+ ) | Нет | Нет | Да (только ASP.NET Core) |
Использование GPU | да | да | да | Нет |
График подачи заявлений | Да (XAML) | Нет | да | Нет |
обозреватель производительности | Нет | Нет | Нет | Нет |
IntelliTrace | .NET только с Visual Studio Enterprise | Нет | .NET только с Visual Studio Enterprise | .NET только с Visual Studio Enterprise |
Какие средства поддерживаются в Linux?
Следующие средства поддерживаются в Linux в качестве целевой платформы, а также Windows:
- Использование ЦП
- Отслеживание выделения объектов в .NET
- Асинхронная синхронизация .NET
- Счетчики .NET
- Средство просмотра событий
- База данных
Научитесь пользоваться профилировщиками
В следующих статьях и блогах содержатся дополнительные сведения, которые помогут вам эффективно использовать средства производительности Visual Studio.
- Исследование случая: Руководство для начинающих по оптимизации кода
- исследование . Изоляция проблемы с производительностью
- Улучшение производительности Visual Studio с помощью нового средства инструментирования
- пример: двойная производительность в течение 30 минут