/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
MEMMAXMEMMIN を使用して、メモリ内のトレーニング データの最大と最小の予約サイズを指定します。 値は、予約するメモリ量 (バイト単位) です。 既定では、これらの値は内部ヒューリスティックによって決定されます。

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 オプションと、PogoSafeModeVCPROFILE_ALLOC_SCALEVCPROFILE_PATH 環境変数よりも、これらのオプションが優先されます。 アプリケーションのトレーニングによって生成されたプロファイル情報が、ビルド中に対象のプログラム全体の最適化の入力として使用されます。 アプリのトレーニング中とビルド中にパフォーマンスのためのさまざまなプロファイル機能を制御する他のオプションを設定することもできます。 /GENPROFILE で指定される既定のオプションを使用すると、特に大規模で複雑なマルチ スレッドのアプリの場合に、最も正確な結果が得られます。 /FASTGENPROFILE オプションでは、精度と引き換えに、トレーニング中のメモリ占有領域を削減してパフォーマンスを向上させることができる、別の既定値が使用されます。

/GENPROFILE または /FASTGENPROFILE を使用してビルドした後に、インストルメントされたアプリを実行すると、プロファイル情報がキャプチャされます。 この情報は、/USEPROFILE リンカー オプションを指定してプロファイリング手順を実行するときにキャプチャされ、その後最適化されたビルド ステップのガイドとして使用されます。 アプリをトレーニングする方法の詳細、および収集したデータの詳細については、「ガイド付き最適化のプロファイル」を参照してください。

/GENPROFILE または /FASTGENPROFILE を指定する場合は、必ず /LTCG を指定します。

Visual Studio 開発環境でこのリンカー オプションを設定するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、Visual Studio での C++ コンパイラとビルド プロパティの設定に関する記事を参照してください。

  2. [構成プロパティ]>[リンカー]>[コマンド ライン] プロパティ ページを選択します。

  3. /GENPROFILE または /FASTGENPROFILE オプションと引数を [追加のオプション] ボックスに入力します。 OK を選択して変更を保存します。

このリンカーをコードから設定するには

関連項目

MSVC リンカーのリファレンス
MSVC リンカー オプション
/LTCG (リンク時のコード生成)