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


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

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

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

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

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

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

Какие инструменты поддерживаются для моего проекта?

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

Инструмент для повышения производительности .СЕТЬ C/C++ UWP (Универсальная платформа Windows) ASP.NET/ASP.NET Core
использование процессора да да да да
использование памяти да да да да
выделение объектов .NET да Нет да да
инструментирования да да да да
счетчики .NET Да (только .NET Core/5+ ) Нет Нет Да (только ASP.NET Core)
BenchmarkDotNet да Нет Нет частичный
Файловые операции ввода-вывода да да да да
PerfTips да да да да
средства просмотра событий да да да да
.NET Асинхронный да Нет да да
база данных Да (только .NET Core/5+ ) Нет Нет Да (только ASP.NET Core)
использование GPU да да да Нет
График приложения Да (XAML) Нет да Нет
обозреватель производительности Нет Нет Нет Нет
IntelliTrace .NET только с Visual Studio Enterprise Нет .NET только с Visual Studio Enterprise .NET только с Visual Studio Enterprise

Поддержка проектов CMake совпадает с C++. Однако необходимо задать исполняемый файл в качестве целевого объекта в профилировщике производительности (ALT + F2), выбрав исполняемый файл в качестве запускаемого проекта.

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

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

  • Использование ЦП
  • Отслеживание выделения объектов в .NET
  • Асинхронная синхронизация .NET
  • Счетчики .NET
  • BenchmarkDotNet
  • Средство просмотра событий
  • База данных

Научитесь пользоваться профилировщиками

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