コード内で収集コントロール API を使用して、インテル® VTune™ プロファイラーがアプリケーションのデータを収集する方法を制御できます。
使用するプリミティブ |
これを行うには |
|---|---|
void __itt_pause (void) |
データを収集せずにアプリケーションを実行します。インテル® VTune™ プロファイラーは、スレッドやプロセスの生成など重要な情報のみを収集することで、収集時のオーバーヘッドを軽減できます。 |
void __itt_resume (void) |
データの収集を再開します。インテル® VTune™ プロファイラーはすべてのデータの収集を再開します。 |
void __itt_detach (void) |
データ収集をデタッチします。インテル® VTune™ プロファイラーはすべてのプロセスからコレクターをデタッチします。アプリケーションはそのまま動作しますが、実行中にデータは収集されません。 |
データ収集をポーズすると次の効果があります。
データ収集は、現在のスレッド内だけではなくプログラム全体でポーズされます。
一部のランタイム解析のオーバーヘッドを軽減できます。
次の API は、データ収集のポーズの影響を受けません。
ドメイン API
文字列操作 API
スレッド命名 API
次の API は、データ収集のポーズの影響を受けます。これらの API はポーズ状態ではデータが収集されません。
タスク API
フレーム API
イベント API
ユーザー定義同期 API
ポーズ (Pause)/再開 (Resume) API の呼び出し頻度は 1Hz が妥当なレートです。この操作は、解析の実行中にすべてのプロセスのデータ収集を一時停止および再開し、対応する収集の状態を GUI に通知するため、小さなワークフローで頻繁に呼び出すことは推奨されません。小さなワークロードでは、フレーム API の使用を検討してください。
次のコードの ポーズ (pause)/ 再開 (resume) 呼び出しは、収集ポーズしてアプリケーションを起動し、特定のコード領域に集中できるようにします。
int main(int argc, char* argv[]) {
// ここで初期化ワークを行う
__itt_resume();
// ここでプロファイル・ワークを行う
__itt_pause();
// ここでファイナライズ・ワークを行う
return 0;
}次のコードに示す ポーズ/再開 呼び出しは、注目しないワークを非表示にすることを可能にします。
int main(int argc, char* argv[]) {
// ここでワークを行う
__itt_pause();
// ここで重要ではないワークをおこなう
__itt_resume();
// ここでワークを行う
__itt_detach();
// ここで重要ではないワークをおこなう
return 0;
}