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


Какое средство производительности следует использовать? (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.