次の方法で共有


ユニバーサル Windows プラットフォーム アプリでのプロファイルガイド付き最適化の実行

このトピックでは、ユニバーサル Windows プラットフォーム (UWP) アプリにプロファイル ガイド付き最適化 (PGO) を適用するための詳細なガイドを提供します。 デスクトップ アプリで使用できるすべての手順が UWP アプリで使用できるわけではないため、PGO を組み込むために必要なプロセスを説明して、UWP 開発者が最適化を容易にし、アクセスしやすくすることです。

Visual Studio 2015 Update 3 を使用して既定の DirectX 11 アプリ (UWP) テンプレートに PGO を適用する基本的なチュートリアルを次に示します。

このガイド全体のスクリーンショットは、次の新しいプロジェクトに基づいています。Visual C > インストール済みの > テンプレートと選択され、[Direct 11 アプリ] オプションが強調表示されている [新しいプロジェクト] ダイアログ ボックスを示すスクリーンショット。

DirectX 11 アプリ テンプレートに PGO を適用するには:

  1. ソリューション構成を [リリース に設定するか、リリース用に最適化されたコードを生成するソリューション構成を選択します。 理論的にはデバッグ ビルドで PGO を実行できますが、PGO を使用して最適化されていないビルドを最適化するのは効果がありません。

App1 ウィンドウ

  1. プロジェクトのプロパティ (Properties>C/C++>Optimization) で、プログラム全体の最適化 の /GL フラグを使用してビルドしていることを確認します (これは構成によって既に設定されている可能性があります)。

プログラム全体の最適化

  1. リンカー プロパティ (リンカー最適化プロパティ) に移動し、リンク時間コード生成 プロファイルガイド付き最適化 - インストルメント (LTCG:PGInstrument)に設定します。

リンク時間コード生成

  1. [ソリューションビルド] を選択し、[ソリューション展開] を選択します。

[ソリューションのビルド] オプションと [ソリューションの配置] オプションを示す赤い矢印が表示された [ビルド] ドロップダウン リストを示すスクリーンショット。

ビルド出力の場所を確認し、.pgd ファイルが生成されたことを確認することで、すべてが正常に機能していることを再確認できます。 この例では、ビルド出力と共に次のファイルが生成されたことを意味します。

C:\Users\<USER>\Documents\Visual Studio 2015\Projects\App1\Release\App1\App1.pgd

既定では、.pgd ファイルは実行可能ファイルと同じ名前になります。 また、Profile Guided Database リンカー オプションを変更することによって生成される .pgd ファイルの名前を変更することもできます。

  1. Visual Studio VC バイナリ ディレクトリに移動します (既定では、これは C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\binのようになります)。 x86 実行可能ファイルの場合は、pgort140.dllコピーします。x64 実行可能ファイルの場合は、amd64\pgort140.dllから x64 バージョンをコピーします。 展開されたパッケージのルートに適切なバージョンの pgort140.dll を貼り付けます。 このサンプルのパスは次のとおりです。

C:\Users\<USER>\Documents\Visual Studio 2015\Projects\App1\Release\App1\AppX\

UWP アプリはパッケージ内に存在するライブラリのみを読み込むことができるため、この手順が必要です。

AppX フォルダーの内容を示すエクスプローラー ウィンドウのスクリーンショット。

  1. [スタート] メニューから、または Visual Studio デバッグ メニューから、[デバッグなしで開始] オプションを使用してアプリ 実行します。

[デバッグなしで開始] オプションが強調表示されている [デバッグ] ドロップダウン リストを示すスクリーンショット。

  1. 現在実行中のビルドがインストルメント化され、PGO データが生成されます。 この時点で、最適化しようとしている最も一般的なシナリオのいくつかを通してアプリケーションを実行する必要があります。 プログラムが目的のシナリオを実行したら、適切なバージョンの pgort140.dllが見つかったのと同じフォルダーにある pgosweep.exe ツールを見つけます。 または、Visual Studio (x86/x64) Native Tools コマンド プロンプトのパスに適切なバージョンが既に設定されています。 PGO データを収集するには、アプリケーションの実行中に次のコマンドを実行して、プロファイル データを含む .pgc ファイルを生成します。

pgosweep.exe <executable name> <output file>

また、pgosweep.exe ヘルプ (pgosweep.exe /help) を参照して、PGO データの収集方法を制御するためのその他の省略可能な引数を表示することもできます。

.pgd が配置されているビルドの場所に .pgc ファイルを出力し、ファイルに <PGDName>!<RunIdentifier>.pgc名前を付けるのもお勧めします。 この例では、次の意味です。

pgosweep.exe App1.exe "C:\Users\<USER>\Documents\Visual Studio 2015\Projects\App1\Release\App1\App1!1.pgc"

さらに、App1!CoreScenario.pgcApp1!UseCase5.pgcなどの収集を行うこともできます。.pgc ファイルがこのように命名され、.pgd と共にビルド出力の場所に配置されている場合、手順9でリンクするときに自動的にマージされます。

  1. 省略可能: 既定では、手順 7 で指定され、.pgd の横に配置された .pgc ファイルはすべてリンク時にマージされ、均等に重み付けされますが、特定の実行の重み付け方法をより詳細に制御することもできます。 これを行うには、最初に のコピーを見つけたのと同じフォルダーにある 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"
  1. 1 つ以上の .pgc ファイルを生成し、それらを .pgd と一緒に配置するか、手動でマージした後 (手順 8)、リンカーを使用して最終的な最適化されたビルドを作成できるようになりました。 リンカー プロパティ (プロパティリンカー最適化) に戻り、リンク時間コード生成 プロファイルガイド付き最適化 - 最適化 (LTCG:PGOptimize) に設定し、使用する プロファイルガイド付きデータベース が .pgd を指していることを確認します (これを変更していない場合は、 すべて順に並べ替える必要があります)。

[App 1 Property Pages](アプリ 1 プロパティ ページ) ダイアログ ボックスのスクリーンショットで、[構成プロパティ > リンカー > 最適化] が選択され、リンク時間コード生成オプションとプロファイルガイド付き最適化 - 最適化 L T C G : P G オプションが強調表示されています。

  1. プロジェクトがビルドされると、リンカーは pgomgr.exe を呼び出して、既定の重み 1 で <PGDName>!*.pgc ファイルを .pgd にマージし、結果のアプリケーションはプロファイリング データに基づいて最適化されます。

こちらも参照ください