Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе представлено пошаговое руководство по применению интерактивной оптимизации профилей (PGO) к приложениям универсальной платформы Windows (UWP). Не все шаги, доступные для классических приложений, доступны для приложений UWP, поэтому наша цель состоит в том, чтобы объяснить процесс, необходимый для включения PGO, чтобы упростить оптимизацию и повысить доступность для разработчиков UWP.
Ниже приведено базовое пошаговое руководство по применению PGO к шаблону приложения DirectX 11 (UWP) по умолчанию с помощью Visual Studio 2015 с обновлением 3.
Снимок экрана, приведенный в этом руководстве, основан на следующем проекте:
Чтобы применить PGO к шаблону приложения DirectX 11:
- Установите конфигурацию решения на релиз или выберите конфигурацию решения, где создается оптимизированный код, предназначенный для релиза. Хотя вы могли бы теоретически запустить PGO в отладочной сборке, это будет неэффективно использовать PGO для оптимизации другой неоптимизированной сборки.
- Проверьте в свойствах вашего проекта (свойства>C/C++>Оптимизация), что вы используете флаг /GL для Оптимизации всей программы (это может быть уже задано вашей конфигурацией).
- Перейдите в свойства компоновщика (Свойства>Компоновщик>Оптимизация) и задайте Генерацию кода во время компоновки на Оптимизация, управляемая профилем — инструмент (LTCG:PGInstrument).
- Выберите Сборка решения, а затем выберите Развертывание решения.
Вы можете дважды проверить правильность работы всего, просмотрев расположение выходных данных сборки и убедившись, что PGD-файл был создан. В этом примере это означает, что следующий файл был создан вместе с выходными данными сборки:
C:\Users\<USER>\Documents\Visual Studio 2015\Projects\App1\Release\App1\App1.pgd
По умолчанию PGD-файл будет иметь то же имя, что и исполняемый файл. Вы также можете изменить имя файла .pgd, созданного путем изменения параметра линковщика Profile Guided Database.
- Перейдите в каталог двоичных файлов Visual Studio VC (по умолчанию это выглядит как
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin
). Для исполняемых файлов x86 скопируйтеpgort140.dll
; для исполняемых файлов x64 скопируйте версию x64 изamd64\pgort140.dll
. Вставьте соответствующую версиюpgort140.dll
в корень развернутого пакета. Для этого примера используется следующий путь:
C:\Users\<USER>\Documents\Visual Studio 2015\Projects\App1\Release\App1\AppX\
Этот шаг необходим, так как приложения UWP могут загружать только библиотеки, существующие в их пакете.
- Запустите приложение из меню "Пуск" или из меню "Отладка" Visual Studio с параметром "Запуск без отладки".
- Сборка, которая сейчас выполняется, проходит инструментирование и генерирует данные для PGO (Profile-Guided Optimization). На этом этапе необходимо запустить приложение с помощью некоторых наиболее распространенных сценариев, которые планируется оптимизировать. После того как программа выполнит предусмотренные сценарии, найдите средство pgosweep.exe, расположенное в той же папке, где находится соответствующая версия
pgort140.dll
. В качестве альтернативы, в командной строке инструментария Visual Studio (x86/x64) уже будет необходимая версия в переменной среды PATH. Чтобы собрать данные PGO, выполните следующую команду, пока приложение по-прежнему работает для создания PGC-файла, содержащего данные профилирования:
pgosweep.exe <executable name> <output file>
Вы также можете просмотреть pgosweep.exe справку (pgosweep.exe /help
), чтобы увидеть другие необязательные аргументы для настройки сбора данных PGO.
Рекомендуется вывести PGC-файлы в расположение сборки, где находится PGD, а также назовите файлы <PGDName>!<RunIdentifier>.pgc
. В этом примере это означает:
pgosweep.exe App1.exe "C:\Users\<USER>\Documents\Visual Studio 2015\Projects\App1\Release\App1\App1!1.pgc"
Дальнейшая обработка может также включать App1!CoreScenario.pgc
, App1!UseCase5.pgc
и т. д. Если файлы .pgc названы таким образом и находятся в выходной директории сборки вместе с .pgd, они будут автоматически объединены при связывании на шаге 9.
- НЕОБЯЗАТЕЛЬНО. По умолчанию, все файлы PGC с именами, указанными на шаге 7 и размещенные рядом с файлами PGD, будут объединены при связывании и взвешены одинаково, но вы также можете иметь больший контроль над тем, как оцениваются отдельные запуски. Для этого вы будете использовать инструмент pgomgr.exe, который также находится в той же папке, где вы впервые нашли копию
pgort140.dll
. Например, чтобы объединить запускCoreScenario
с приоритетом в 3 раза выше, чем у остальных запусков, можно использовать следующую команду:
pgomgr.exe -merge:3 "C:\Users\<USER>\Documents\Visual Studio 2015\Projects\App1\Release\App1\App1!CoreScenario.pgc" "C:\Users\<USER>\Documents\Visual Studio 2015\Projects\App1\Release\App1\App1.pgd"
- Создав один или несколько PGC-файлов и поместив их вместе с PGD или вручную объединяя их (шаг 8), теперь можно использовать компоновщик для создания окончательно оптимизированной сборки. Вернитесь в свойства компоновщика (Свойства>Компоновщик>Оптимизация) и установите Генерация кода во время компоновки на Профилированная оптимизация - Оптимизация (LTCG:PGOptimize) и убедитесь, что профилированная база данных указывает на .pgd, которую вы планируете использовать (если вы это не изменяли, всё должно быть в порядке).
- Теперь при построении проекта компоновщик вызовет pgomgr.exe для объединения всех файлов
<PGDName>!*.pgc
в .pgd с весом по умолчанию 1, и итоговое приложение будет оптимизировано на основе данных профилирования.