Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве представлено общее сравнение основных технологий профилирования производительности общего назначения в Microsoft: Visual Studio Performance Profiler, Windows Performance Toolkit и PerfView.
Эти средства помогут вам диагностировать и понять характеристики производительности приложений в Windows. Цель этого руководства — предоставить общий обзор того, когда использовать одну над другой, выделив сильные стороны каждой и предложив краткий обзор функциональности, которую содержит каждая.
Обзор
Профилировщик производительности Visual Studio создается командой Visual Studio для быстрого понимания характеристик производительности приложения в рамках разработки в существующей системе проектов Visual Studio. Основным её преимуществом является тесная интеграция с активным проектом разработки, упрощение анализа наиболее распространенных сценариев производительности, а также быстрый и простой сбор данных единственного приложения.
Набор средств производительности Windows создается командой Windows для понимания системных характеристик всего компьютера одновременно. Хотя это началось с необходимости анализировать оборудование и драйверы, оно также очень эффективно в выявлении проблем программного обеспечения. Его сила заключается в сборе большого количества информации со всего компьютера одновременно, так что многопроцессные проблемы, те, которые имеют дело с оборудованием или драйверами, и сложные сценарии хорошо соответствуют этим средствам.
PerfView создается командой .NET для понимания производительности приложений .NET. Как и набор средств производительности Windows, он может одновременно собирать большие объемы информации со всего компьютера. Он отличается своей способностью отображать очень подробные сведения о службах .NET среды выполнения, таких как сборка мусора, JIT-компиляция и управляемый пул потоков. PerfView можно использовать для управляемых, собственных и смешанных приложений.
Между этими инструментами существует пересечение. Часто можно начать изучение проблемы в одном инструменте и переключиться на другой для другого представления одного сценария. В других случаях один из инструментов будет более эффективным, чем другие.
Installation
Профилировщик производительности Visual Studio — это компонент самого Visual Studio, и его можно установить с помощью того же мастера установки, что и остальную часть среды разработки.
Набор средств производительности Windows можно скачать отдельно в составе комплекта средств для оценки и развертывания Windows. Однако средство записи производительности командной строки предварительно установлено с Windows 10 и Windows 11, как wpr.exe доступно для переменной пути по умолчанию из оболочк, таких как PowerShell и командная строка.
Анализатор производительности доступен как приложение в Microsoft Store.
PerfView доступен в виде автономного скачивания на странице выпусков PerfView GitHub. Установка не требуется.
Настройка сценариев расширенного анализа производительности
Набор средств производительности Windows также предлагает две точки расширяемости, которые могут служить сценариям расширенного анализа производительности.
- Пакет Microsoft Performance Toolkit SDK обрабатывает данные трассировки и позволяет разработчикам создавать собственные плагины для использования в Анализаторе производительности Windows.
- .NET TraceProcessing позволяет создавать пользовательские средства, которые могут обрабатывать сведения трассировки в результирующие таблицы и особенно полезен для автоматического анализа данных массовой трассировки.
PerfView также основан на библиотеке .NET TraceEvent для программного использования трассировок производительности. TraceEvent можно использовать независимо от PerfView для выполнения пользовательского анализа данных трассировки производительности.
Замечание
Для работы сценариев анализа производительности потребуется доступ к символам , которые сопоставляются с тестируемым приложением Windows. При сборке с помощью Visual Studio они будут находиться так же, как в параметрах сценария отладки, созданных с помощью решения или захваченных с серверов символов. При анализе других библиотек или компонентов необходимо найти символы для этих компонентов, чтобы завершить анализ.
Рекомендации по выбору инструмента
Выбранное средство зависит от сценария производительности, который вы пытаетесь изучить. Сравнение функциональных возможностей и признаков между инструментами представлено в следующей таблице, где:
- Хорошо поддерживается означает, что средство предназначено для целевой задачи и достигает надежных и подробных результатов.
- Поддерживаемые средства могут требовать дополнительную конфигурацию или шаги для достижения требуемых результатов. Может содержать ограниченный диапазон действий в рамках категории.
- Не поддерживается означает, что средство не предназначено для этого использования.
Подсказка
Для общего правила, начните с Visual Studio Profiling, когда это возможно. Перейдите к Набору средств производительности Windows или PerfView при достижении ограничений возможностей средств Visual Studio.
| Ситуация | Профилировщик производительности Visual Studio | Набор инструментов для оптимизации производительности Windows | PerfView |
|---|---|---|---|
| Общие рекомендации по использованию | |||
| Размер файла трассировки | Хорошо поддерживается | Supported | Supported |
| Приобретение инструментов | Хорошо поддерживается | Хорошо поддерживается | Хорошо поддерживается |
| Комплекты для расширения | Не поддерживаются | Хорошо поддерживается | Хорошо поддерживается |
| Учет объема работ | |||
| Один процесс или проект | Хорошо поддерживается | Supported | Supported |
| Несколько процессов | Не поддерживаются | Хорошо поддерживается | Хорошо поддерживается |
| Рекомендации по оборудованию | |||
| Использование ЦП | Хорошо поддерживается | Хорошо поддерживается | Хорошо поддерживается |
| Использование GPU | Хорошо поддерживается | Хорошо поддерживается | Не поддерживаются |
| Использование памяти | Хорошо поддерживается | Хорошо поддерживается | Хорошо поддерживается |
| Входные и выходные данные устройства | Не поддерживаются | Хорошо поддерживается | Хорошо поддерживается |
| Использование электроэнергии | Не поддерживаются | Хорошо поддерживается | Не поддерживаются |
| Системные хэндлы | Не поддерживаются | Хорошо поддерживается | Хорошо поддерживается |
| Рекомендации по поддержке языка кода | |||
| Поддержка C/C++ | Хорошо поддерживается | Хорошо поддерживается | Хорошо поддерживается |
| Поддержка .NET | Хорошо поддерживается | Хорошо поддерживается | Хорошо поддерживается |
| Поддержка JavaScript | Supported | Supported | Supported |
| Рекомендации по сценариям | |||
| Трассировка событий Windows | Supported | Хорошо поддерживается | Хорошо поддерживается |
| Композиция | Не поддерживаются | Хорошо поддерживается | Не поддерживаются |
| HTML/Edge/Internet Explorer/Webview | Не поддерживаются | Хорошо поддерживается | Не поддерживаются |
| XAML/WinUI | Supported | Хорошо поддерживается | Хорошо поддерживается |
| Конвейеры аудио и видео и сбои | Не поддерживаются | Хорошо поддерживается | Не поддерживаются |
| Время базы данных | Хорошо поддерживается | Не поддерживаются | Не поддерживаются |
| Выделение управляемых объектов и управление сборкой мусора | Хорошо поддерживается | Не поддерживаются | Хорошо поддерживается |
| Пользовательские сценарии | Не поддерживаются | Хорошо поддерживается | Хорошо поддерживается |
Общие рекомендации по использованию
Для тех, кто только начинает работу с анализом производительности, мы рекомендуем Visual Studio Performance Profiler как хорошо интегрированную функцию в существующем наборе разработки Visual Studio. Мы рекомендуем использовать профилировщик производительности Visual Studio в PerfView, если он соответствует вашим потребностям.
Для более сложного анализа производительности системы, который может требовать больше мощности и универсальности, мы рекомендуем Windows Performance Toolkit, который состоит из двух средств, используемых для выполнения задач анализа производительности:
- Средство Windows Performance Recorder, доступное как в командной строке, так и с графическим интерфейсом, отвечает за запись сеанса трассировки.
- Анализатор производительности Windows открывается позже для последующей обработки собранных данных и предоставления высоконастройного представления анализа.
Ниже приведены некоторые преимущества, предоставляемые Профилировщиком производительности Visual Studio.
- Хорошее введение в анализ производительности в основных доменах.
- Он обрабатывает многие сложности анализа и отладки автоматически на основе конфигурации проекта.
- Он автоматически выделяет основные области озабоченности.
- Лучше сосредоточиться только на одном приложении, с меньшим, более ориентированным набором данных и меньшей областью сбора.
- Более конкретный фокус преобразуется в меньшее влияние на другие приложения и оборудование компьютера во время профилирования, уменьшение общего размера файлов трассировки, созданных и сохраненных, а также увеличение скорости обработки для просмотра сведений после завершения сбора.
- Занимает меньше времени на начало и завершение трассировки благодаря более быстрому анализу и обратной связи, поскольку Профилировщик производительности Visual Studio сосредоточен только на приложении, а не на всей системе.
- Сбор данных и результирующий анализ выполняются в Visual Studio, при этом страницы анализа запускаются автоматически при выводе коллекции. Представление отчета также автоматически фокусирует внимание на горячих точках или областях действий.
Ниже приведены некоторые преимущества, предоставляемые набором средств производительности Windows.
- Достаточно документации и блогов предоставляются командами по производительности и диагностике Windows, которые помогут вам приступить к работе.
- Это лучше для сбора очень больших файлов, особенно из систем, занятых фоновыми задачами. Это универсальный инструмент для сбора информации, которая затем будет фильтроваться в интерфейсе анализатора производительности Windows.
- Возможность настраиваться для сценариев расширенного анализа производительности с помощью точек расширяемости. (См. ниже)
Ниже перечислены некоторые преимущества, которые предлагают PerfView:
- Полная встроенная документация и учебные видео, доступные в Интернете и связанные с приложением.
- Легко развернуть в рабочих средах, просто скопировав PerfView.exe.
- Режим записи полетов для записи проблем, которые трудно воспроизвести.
- Очень подробная диагностика для служб среды выполнения .NET.
- Расширяемый для пользовательских представлений.
Соображения по объему работ
Для анализа одного приложения и особенно одного процесса все средства весьма эффективны для сбора данных и анализа производительности. Однако преимущество останется на стороне профилировщика производительности Visual Studio, особенно если исходный код приложения и система проекта уже доступны. Подсистема профилировщика производительности Visual Studio предназначена для сбора сведений о ЦП, GPU и памяти из двоичного файла в аналогичном упрощенном режиме с возможностью отладки F5. При сосредоточении только на одном приложении, этот механизм сбора предлагает быстрое выполнение и цикл разработки.
Выберите PerfView, если Visual Studio не имеет необходимых возможностей, невозможно запустить из-за требований к коллекции (распространенных в рабочих средах) или более подробных диагностических возможностей .NET.
В ситуациях с большей сложностью , включающими несколько запросов между процессами, аппаратными устройствами и их драйверами, или глубокое погружение в технологии платформы Windows, набор средств производительности Windows является оптимальным выбором.
Рекомендации по оборудованию
Профилировщик производительности Visual Studio, Набор средств производительности Windows и PerfView могут диагностировать ЦП и память для основных компонентов оборудования с помощью Профилировщика производительности Visual Studio и Набора средств производительности Windows, которые также поддерживают GPU. Средства обычно хорошо подходят для вводного анализа в этих областях.
Использование ЦП можно анализировать со всеми тремя средствами и обычно фиксируется с помощью выборки. Выборка фиксирует трассировки стека из приложения периодически и предоставляет ранжирование по частоте их появления. Оба средства могут изменить это поведение, чтобы вместо этого использовать инструментирование для точного учета.
Использование GPU можно анализировать как с помощью Профилировщика производительности Visual Studio, так и набора средств производительности Windows, которые содержат общие сведения.
Использование памяти можно проанализировать с использованием всех трех инструментов, собирающих информацию о пространстве кучи и стеках, связанных с выделениями в куче.
При возникновении более сложных сценариев, таких как анализ сети, дисков, устройств, дескрипторов или общего потребления энергии системы, набор средств производительности Windows более оснащен для обработки анализа. Эти данные лучше всего собираются непосредственно из операционной системы, так как он отправляет запросы на различные аппаратные компоненты. Набор средств производительности Windows разработан в тандеме с операционной системой, поэтому он готов и способен собирать эту более системную категорию информации.
Рекомендации по поддержке языка кода
Набор средств производительности Windows в основном ориентирован на поддержку C и C++, так как эти языки используются в базе кода операционной системы Windows.
Поддержка Профилировщика производительности Visual Studio ориентирована на более широкий спектр языков программирования, начиная с .NET-технологий, таких как C# и ASP.NET, и затем распространяясь на другие языки.
PerfView поддерживает приложения .NET и собственные приложения (C и C++). Он имеет глубокие знания о средах выполнения .NET и возможностях ASP.NET веб-рабочих нагрузок.
Это не значит, что Visual Studio не может анализировать код C или C++ или что Windows Анализатор производительности не может анализировать приложения .NET или что PerfView не может анализировать веб-приложения. Лучше всего начать с инструмента, который наиболее соответствует анализируемому приложению, чтобы воспользоваться его сильными сторонами.
Рекомендации по сценариям
Все средства содержат несколько вариантов на основе сценариев для изучения производительности приложений.
Параметры Профилировщика производительности Visual Studio, как правило, сосредоточены на .NET, пользовательском интерфейсе и базах данных, находящихся в анализируемом приложении.
Набор средств производительности Windows, как правило, фокусируется на компонентах операционной системы и платформах, таких как композиция, представления браузера и сбои в конвейерах обработки в режиме реального времени.
В сценариях, требующих более настраиваемого решения, средство записи производительности Windows может объединить как системную коллекцию, так и данные сбора, связанные с приложениями, в один сеанс записи. Эта функция позволяет разработчику приложений предложить полное решение для развертывания для клиентов для запроса данных о производительности с оборудования, которое может отличаться от того, что использовалось для разработки продукта. Дополнительные сведения об этом механизме можно найти в серии блогов по созданию настраиваемых профилей командой по производительности и диагностике Windows.
PerfView предназначен для глубокого изучения приложений и сред выполнения .NET, но также способен на исследования, связанные с многопроцессными приложениями и операционными системами.
Сводка
Профилировщик производительности Visual Studio, Набор средств производительности Windows и PerfView — это три надежных средства, доступные корпорацией Майкрософт для понимания производительности приложения. Выбор инструмента, который лучше всего соответствует вашим потребностям, требует различных рекомендаций в отношении конкретной ситуации. Мы надеемся, что это руководство предоставит вам информацию, необходимую для принятия мудрых решений по анализу производительности. А также приглашаем вас оставить отзыв ниже на этой странице. Если у вас есть вопросы, связанные с производительностью разработки Windows, пожалуйста, отправьте их в репозиторий Windows Dev Performance.
Windows developer