Какое средство производительности следует использовать? (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.
- Пример: руководство по оптимизации кода для начинающих
- Пример. Изоляция проблемы с производительностью
- Повышение производительности Visual Studio с помощью нового инструмента инструментирования
- Пример: двойная производительность в течение 30 минут