Поделиться через


Какое средство производительности следует использовать? (C#, Visual Basic, C++, F#)

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

Общий подход к оптимизации кода с помощью средств профилирования см . в руководстве по оптимизации кода для начинающих.

Какие средства следует использовать?

В следующей таблице перечислены различные предложения Visual Studio и общие сценарии выбора средства.

Средство производительности Description Когда использовать средство?
Загрузка ЦП Показывает, где ЦП тратит время. • Начало исследования общих проблем с производительностью.
• Изучение высокого использования ЦП сервера.
• Изучение сценариев DevOps, таких как, когда заказы не проходят через веб-сайт розничной торговли.
• Оптимизация использования ЦП.
• Исследование задержки в вызовах API.
График пламени Просмотрите в средстве использования ЦП, которое предоставляет альтернативную визуализацию дерева вызовов. Изучение задержки в вызовах API
Горячий путь Просмотрите в средстве использования ЦП, показывающее, где большую часть времени ЦП было потрачено в приложении. Изучение задержки в вызовах API
Использование памяти Отображает память приложения для поиска таких проблем, как утечка памяти. • Оптимизация использования
памяти• Анализ замораживания
пользовательского интерфейса• Исследование предполагаемой утечки памяти (машинный код)
Распределение объектов .NET Показывает, где выделены объекты .NET и сведения о сборке мусора. • Оптимизация использования
памяти .NET• Анализ сборки мусора
Инструментирование Показывает точное количество вызовов и время вызова. • Вам нужен такой инструмент, как использование ЦП, но требуется точное количество вызовов и время, затраченное на функции на основе времени настенные часы.
• Вы хотите увидеть заблокированное время, например время ожидания блокировки.
• Примечание. Это средство требует дополнительных затрат.
Операции ввода-вывода файлов Показывает операции ввода-вывода файла и сколько времени они занимают и сколько данных они обрабатывают. Изучение замораживания пользовательского интерфейса
PerfTips Показывает быстрое измерение сведений о производительности при взаимодействии с кодом. При отладке необходимо просмотреть истекшее время между предыдущей операцией шага (или точкой останова) до текущего шага или точки останова.
Средство просмотра событий Отображает HTTP-запросы, сообщения журнала и исключения. • Исследование задержки в вызовах
API• Исследование медленного приложения, работающего на удаленном веб-сервере
.NET Async Показывает асинхронное и ожидаемое использование в приложениях .NET. Изучите предполагаемую проблему производительности с асинхронным кодом.
Счетчики .NET Динамический отчет для счетчиков .NET. • Начало исследования общих проблем с производительностью.
• Требуется трассировка для метрик на основе счетчиков .NET, таких как исключения в секунду, сборка мусора и использование ЦП.
База данных Показывает производительность запросов к базе данных. Изучите производительность запросов базы данных, использующих ADO.NET или Entity Framework Core.
Использование GPU Показывает высокоуровневое использование оборудования приложения Direct3D. Проверьте, привязана ли производительность приложения к ЦП или GPU.
Временная шкала приложения Показывает производительность пользовательского интерфейса для приложений XAML. Изучение производительности пользовательского интерфейса в приложениях XAML, таких как время, затраченное на отрисовку кадров.
IntelliTrace Средство отладчика, позволяющее записывать события и проверять состояние приложения в различных точках выполнения. Вы хотите, чтобы средство проверялось состояние приложения в различных точках, а не только текущее состояние приложения.

Какие средства поддерживаются для проекта?

В следующей таблице перечислены различные предложения Visual Studio и различные типы проектов, с которыми их можно использовать:

Средство производительности .NET C/C++ UWP ASP.NET/ASP.NET Core
Загрузка ЦП yes yes yes yes
Использование памяти yes yes yes yes
Распределение объектов .NET yes no yes yes
Инструментирование yes yes yes yes
Операции ввода-вывода файлов yes yes yes yes
PerfTips yes yes yes yes
Средство просмотра событий yes yes yes yes
.NET Async yes no yes yes
Счетчики .NET Да (только .NET Core/5+ ) no no да (только ASP.NET Core)
База данных Да (только .NET Core/5+ ) no no да (только ASP.NET Core)
Использование GPU yes yes yes no
Временная шкала приложения да (XAML) no yes no
Обозреватель производительности no no no no
IntelliTrace Только .NET с Visual Studio Enterprise no Только .NET с Visual Studio Enterprise Только .NET с Visual Studio Enterprise

Какие средства поддерживаются в Linux?

Следующие средства поддерживаются в Linux в качестве целевой платформы, а также Windows:

  • Загрузка ЦП
  • Отслеживание распределения объектов .NET
  • .NET Async
  • Счетчики .NET
  • Средство просмотра событий
  • База данных

Узнайте, как использовать профилировщики

В следующих статьях и блогах содержатся дополнительные сведения, которые помогут вам эффективно использовать средства производительности Visual Studio.