/GENPROFILE
、/FASTGENPROFILE
(プロファイル インストルメント ビルドの生成)
ガイド付き最適化のプロファイル (PGO) をサポートするために、リンカーによる .pgd
ファイルの生成を指定します。 /GENPROFILE
と /FASTGENPROFILE
では、異なる既定のパラメーターが使用されます。 プロファイリング中に速度とメモリ使用量よりも精度を優先する場合は、/GENPROFILE
を使用します。 精度よりも少ないメモリ使用量と速度を優先する場合は、/FASTGENPROFILE
を使用します。
構文
profile-argument
MEMMAX=
value
MEMMIN=
value
PGD=
filename
引数
profile-argument
引数のいずれかを /GENPROFILE
または /FASTGENPROFILE
に指定できます。 ここに示すパイプ文字 (|
) で区切られた引数は、相互に排他的です。 引数を区切るには、コンマ文字 (,
) を使用します。 引数、コンマ、またはコロン (:
) の後には空白を入れないでください。
COUNTER32
| COUNTER64
32 ビットのプローブ カウンターの使用を指定するには COUNTER32
を使用し、64 ビットのプローブ カウンターを指定するには COUNTER64
を使用します。 /GENPROFILE
を指定する場合、既定値は COUNTER64
です。 /FASTGENPROFILE
を指定する場合、既定値は COUNTER32
です。
EXACT
| NOEXACT
プローブのスレッドセーフであるインターロックされたインクリメントを指定する場合は、EXACT
を使用します。 NOEXACT
はプローブの保護されていないインクリメント操作を指定します。 既定値は、NOEXACT
です。
MEMMAX
=value, MEMMIN
=value
MEMMAX
と MEMMIN
を使用して、メモリ内のトレーニング データの最大と最小の予約サイズを指定します。 値は、予約するメモリ量 (バイト単位) です。 既定では、これらの値は内部ヒューリスティックによって決定されます。
PATH
| NOPATH
一意の関数パスごとに別の PGO カウンターのセットを指定する場合は、PATH
を使用します。 関数ごとにカウンターのセットを 1 つだけ指定する場合は、NOPATH
を使用します。 /GENPROFILE
を指定する場合、既定値は PATH
です。 /FASTGENPROFILE
を指定する場合、既定値は NOPATH
です。
TRACKEH
| NOTRACKEH
トレーニング中に例外がスローされた場合に、追加のカウンターを使用して正確なカウントを保持するかどうかを指定します。 正確な数を保持するために追加のカウンターを指定する場合は、TRACKEH
を使用します。 例外処理を使用していない、またはトレーニング シナリオで例外が発生しないコードに対して 1 つのカウンターを指定する場合は、NOTRACKEH
を使用します。 /GENPROFILE
を指定する場合、既定値は TRACKEH
です。 /FASTGENPROFILE
を指定する場合、既定値は NOTRACKEH
です。
PGD
=filename
.pgd
ファイルの基本ファイル名を指定します。 既定では、リンカーは、基本の実行可能イメージのファイル名に .pgd
拡張子を付けて使用します。
解説
/GENPROFILE
と /FASTGENPROFILE
のオプションは、ガイド付き最適化のプロファイル (PGO) のためのアプリケーション トレーニングをサポートするために必要なプロファイル インストルメンテーション ファイルを生成するようにリンカーに指示します。 これらのオプションは Visual Studio 2015 で新しく追加されたものです。 非推奨の /LTCG:PGINSTRUMENT
、/PGD
、/POGOSAFEMODE
オプションと、PogoSafeMode
、VCPROFILE_ALLOC_SCALE
、VCPROFILE_PATH
環境変数よりも、これらのオプションが優先されます。 アプリケーションのトレーニングによって生成されたプロファイル情報が、ビルド中に対象のプログラム全体の最適化の入力として使用されます。 アプリのトレーニング中とビルド中にパフォーマンスのためのさまざまなプロファイル機能を制御する他のオプションを設定することもできます。 /GENPROFILE
で指定される既定のオプションを使用すると、特に大規模で複雑なマルチ スレッドのアプリの場合に、最も正確な結果が得られます。 /FASTGENPROFILE
オプションでは、精度と引き換えに、トレーニング中のメモリ占有領域を削減してパフォーマンスを向上させることができる、別の既定値が使用されます。
/GENPROFILE
または /FASTGENPROFILE
を使用してビルドした後に、インストルメントされたアプリを実行すると、プロファイル情報がキャプチャされます。 この情報は、/USEPROFILE
リンカー オプションを指定してプロファイリング手順を実行するときにキャプチャされ、その後最適化されたビルド ステップのガイドとして使用されます。 アプリをトレーニングする方法の詳細、および収集したデータの詳細については、「ガイド付き最適化のプロファイル」を参照してください。
/GENPROFILE
または /FASTGENPROFILE
を指定する場合は、必ず /LTCG
を指定します。
Visual Studio 開発環境でこのリンカー オプションを設定するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、Visual Studio での C++ コンパイラとビルド プロパティの設定に関する記事を参照してください。
[構成プロパティ]>[リンカー]>[コマンド ライン] プロパティ ページを選択します。
/GENPROFILE
または/FASTGENPROFILE
オプションと引数を [追加のオプション] ボックスに入力します。OK
を選択して変更を保存します。
このリンカーをコードから設定するには
- 以下を参照してください。AdditionalOptions