インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

インターバル・プロファイル・ダンプ

_PGOPTI_Set_Interval_Prof_Dump() 関数は、インターバル・プロファイル・ダンプをアクティブにし、ダンプ発生時のおおよその頻度を設定します。この関数は、非終了アプリケーションで使用します。

この関数呼び出しのプロトタイプは次のとおりです。

構文

void _PGOPTI_Set_Interval_Prof_Dump(int interval);

この関数は、非終了アプリケーションで使用します。

interval パラメーターは、プロファイルのダンプが発生する時間の間隔 (ミリ秒単位) で指定します。例えば、インターバルが 5000 として設定された場合、プロファイル・ダンプとリセットは約 5 秒ごとに行われます。ダンプとリセットの時間測定は、アプリケーションのインストルメントされた関数の実行時に行われるため、インターバルはおおよそとなります。

インターバルを 0 または負の数に設定すると、インターバル・プロファイルのダンプは無効になります。インターバルを非常に小さな値に設定すると、インストルメント済みのアプリケーションがプロファイル情報のダンプにほとんどの時間を費やしてしまう場合があります。インターバルには、できるだけ大きな値を設定し、アプリケーションが本来の作業を行え、十分なプロファイル情報が収集されるようにします。

次の例では、非終了コードでインターバル・プロファイルのダンプを使用する 1 つの方法を示します。

#include <stdio.h> 
// 次の #include 文は
// _PGOPTI_Set_Interval_Prof_Dump_All へのアクセスに必要
#include <pgouser.h> 
int returnValue() { return 100; } 
int main() {
  int ans;
  printf("CTRL-C to quit.\n");
  _PGOPTI_Set_Interval_Prof_Dump(5000);
  while (1)
    ans = returnValue(); 
}

次のようなコマンドを入力して、上記のコードをコンパイルできます。

オペレーティング・システム

Linux*

icc -prof-gen -o intrumented_number number.c 

macOS*

icc -prof-gen -o intrumented_number number.c

Windows*

icl /Qprof-gen /Feinstrumented_number number.c 

コンパイル時に、上記のコードはプログラムが終了するまで約 5 秒ごとにプロファイル情報を .dyn ファイルにダンプします。

profmerge ツールを使用して .dyn ファイルをマージできます。

推奨する使用方法

この関数を、非終了ユーザー・アプリケーションの開始時に呼び出して、インターバル・プロファイル・ダンプを開始します。INTEL_PROF_DUMP_INTERVAL 環境変数をアプリケーションが開始する前に必要なインターバルの値に設定して、インターバル・プロファイル・ダンプを開始することもできます。

インターバル・プロファイル・ダンプを使用すると、ソースコードをほんの少し変更するだけで非終了アプリケーションをプロファイルできるようになります。

ダンプ中の動作を制御するには、INTEL_PROF_DUMP_CUMULATIVE 環境変数を使用します。INTEL_PROF_DUMP_CUMULATIVE を設定しないで INTEL_PROF_DUMP_INTERVAL または API ルーチン _PGOPTI_SET_INTERVAL_PROF_DUMP を使用すると、各ダンプの後にカウンターがリセットされ、各インターバルの収集データが含まれる新しい .dyn ファイルが作成されます。その結果、profmerge で多数の .dyn ファイルを格納およびマージしなければならないことがあります。

INTEL_PROF_DUMP_CUMULATIVE を設定すると、指定された間隔で .dyn ファイルが作成されますが、ダンプ後にデータはリセットされず、ファイルシステムには最新の .dyn ファイルのみが保持されます。そのため、多数の .dyn ファイルを格納したりマージしたりしなくても、その時点までのすべてのカウントの集計を含む、非終了アプリケーションの .dyn ファイルを作成できます。