プロファイルに基づく最適化 (PGO) のクイック・リファレンス

プロファイルに基づく最適化には 3 つのフェーズ (ステップ) があります。

  1. -prof-gen (Linux* および Mac OS* X) オプションまたは /Qprof-gen (Windows*) オプションでインストルメント済みコードを生成し、リンクします。

  2. インストルメント済み実行ファイルを実行し、動的情報 (.dyn) ファイルを生成します。

  3. -prof-use (Linux および Mac OS X) オプションまたは /Qprof-use (Windows) オプションでプロファイル情報を使用してアプリケーションをコンパイルします。

次の図は、それぞのれフェーズとその結果を示しています。

 

 

各フェーズについての詳細は、「アプリケーションのプロファイル」を参照してください。

次の表は、PGO で使用されるコンパイラー・オプションのリストです。

Linux および Mac OS X

Windows

効果

-prof-gen

/Qprof-gen

各基本ブロックの実行カウントを取得するために、プロファイリング用にプログラムをインストルメントします。これは、フェーズ 1 (コードのインストルメント) で使用され、インストルメント済み実行の準備として、インストルメント済みコードをオブジェクト・ファイル内に生成するようにコンパイラーに指示します。動的情報 (.dyn) ファイルが生成されます。

x 修飾子を付けると、オプションは コード・カバレッジ・ツールのような特定のツールで使用できる補足ソース情報を収集します。拡張オプションでは、最適化の向上は見込めず、また並列コンパイル時間が遅くなる可能性があります。

並列 make を行っている場合、このオプションは並列 make には影響を与えません。

詳細は、次のトピックを参照してください。

  • -prof-gen コンパイラー・オプション

-prof-use

/Qprof-use

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

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

インストルメント済みのプログラムを複数回実行すると、実行するたびに動的情報ファイルがマージされ、元の pgopti.dpi ファイルは上書きされます。

Linux:

  • このオプションを -func-groups とともに使用すると、関数グループの動作を制御することができます。

詳細は、次のトピックを参照してください。

  • -prof-use コンパイラー・オプション

-fnsplit-

/Qfnsplit-

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

  • デバッグの機能を向上させるため。デバッグのシンボルテーブルでは、分割ルーチン、すなわちホット・コード・セクションとコールド・コード・セクションを持つルーチンを表示するのは困難です。

  • プロファイル・データが実際のプログラム動作をしなかった場合。つまり、ルーチンが実際は稀ではなく頻繁に使用される場合。

Mac OS X: このオプションはサポートされていません。

Windows: このオプションは、IA-32 ベースのシステムと IA-64 ベースのシステムでは動作が異なります。

IA-32 アーキテクチャー:

  • オプションは、コードすべてを 1 つのセクションに配置し、関数分割を完全に無効にします。

IA-64 アーキテクチャー:

  • オプションは、ルーチン内の分割を無効にしますが、関数のグループ化を有効にします。これは、コールド・コード・セクションまたはホット・コード・セクションのいずれかにルーチン全体を配置する最適化です。関数のグループ化は、デバッグ機能を低下させません。

詳細は、次のトピックを参照してください。

  • -fnsplit コンパイラー・オプション

-prof-dir

/Qprof-dir

動的情報 (.dyn) ファイルを作成および格納するディレクトリーを指定します。ディレクトリーを指定しない場合、.dyn ファイルはプログラムがコンパイルされたディレクトリーに配置されます。

詳細は、次のトピックを参照してください。

  • -prof-dir コンパイラー・オプション

-prof-file

/Qprof-file

プロファイルのサマリーファイルにファイル名を指定します。このオプションが指定されていない場合、サマリー情報はデフォルトの pgopti.dpi ファイルに格納されます。

詳細は、次のトピックを参照してください。

-prof-gen-sampling

/Qprof-gen-sampling

IA-32 アーキテクチャー: アプリケーションの実行ファイルをハードウェア・プロファイリング (サンプリング) 用に準備して、コンパイラーがソース・コード・マッピング情報を生成するようにします。

Mac OS X: このオプションはサポートされていません。

詳細は、次のトピックを参照してください。

-ssp

 

/Qssp

 

IA-32 アーキテクチャー: ソフトウェア・ベースのスペキュレーティブ・プリコンピュテーション (SSP) 最適化を有効にします。

Mac OS X: このオプションはサポートされていません。

詳細は、次のトピックを参照してください。

  • -ssp コンパイラー・オプション

クイック・リファレンス・トピックの一覧は、「クイック・リファレンス・リスト」を参照してください。