基本的な PGO オプション

オプション 説明
-prof_gen[x] インストルメント済み実行の準備として、インストルメント済みコードをオブジェクト・ファイル内に生成するようにコンパイラに命令するオプションです。
-prof_use プロファイルによって最適化された実行ファイルを生成し、利用可能な動的情報 (.dyn) ファイルをいくつかマージして pgopti.dpi ファイルを 1 個作成するようにコンパイラに命令するオプションです。

コードの動作が実行ごとに大きく異なる場合は、プロファイル情報によって得られるメリットが、最新のプロファイルを維持する作業に見合うものであるかどうか検討する必要があります。基本となるプロファイルに基づく最適化には、上記のオプションが PGO フェーズで使用されます。

インストルメント済みコードの作成

-prof_gen[x] オプションは、各基本ブロックの実行カウントを取得するために、プロファイル用プログラムをインストルメントします。PGO のフェーズ 1 を使用して、インストルメント済みのプログラムを実行する準備として、インストルメント済みコードをオブジェクト・ファイルに生成するようにコンパイラに指示します。並列化は -prof_genx コンパイルで自動的にサポートされます。

プロファイルによって最適化された実行ファイルの生成

-prof_use オプションは、PGO のフェーズ 3 で使用され、プロファイルによって最適化された実行ファイルを生成し、使用できる動的情報 (.dyn) ファイルを pgopti.dpi ファイルにマージするようコンパイラに指示します。

動的情報ファイルは、インストルメント済み実行ファイルを実行するフェーズ 2で生成されます。

インストルメント済みプログラムを何回か実行する場合は、-prof_use を指定すると、実行するたびに動的情報ファイルがマージされ、その前の pgopti.dpi ファイルは上書きされます。

関数分割の無効 (Itanium® プロセッサ用コンパイラのみ)

-fnsplit- は関数分割を無効にします。フェーズ3で -prof_use により関数分割は有効になります。これは、ルーチンを異なるセクションに分割することによって、コードの局所性を向上させるためです。異なるセクションとは、コールドまたは、あまり実行されないコードを含むセクションと、残りのコード (ホットコード) を含むセクションです。

次のような理由により、-fnsplit- を使用して、関数分割を無効にできます。