フレーム API

フレーム API を使用して、コード内の目的の場所に呼び出しを挿入して、フレームごとのパフォーマンスを解析します。ここで、フレームとはフレームの開始点と終了点間の範囲です。インテル® VTune™ プロファイラーでは、通常のタスクデータと視覚的に区別するため、フレームは別トラックで表示されます。

フレーム API は再開状態で動作するプロセス単位の関数です。この関数はポーズ状態では動作しません。

フレーム解析では次のことができます:

フレームは、経過時間のオーバーラップしない領域を表します。フレームは本来グローバルであるため、特定のスレッドに関連付けられません。コードフレームの解析と解析データを提供する ITT API。

コードにフレームを API を追加

使用するプリミティブ

説明

__itt_domain *ITTAPI__itt_domain_create ( const char *name)

ドメイン名には、com.my_company.my_application などの URI 命名スタイルを推奨します。ドメインのセットは、アプリケーションの実行中は静的であると想定しているため、ドメインを破棄するメカニズムはありません。

ドメインを作成したスレッドに関係なく、プロセス内のスレッドはすべてのドメインにアクセスできます。この呼び出しはスレッドセーフです。

[in]

name

ドメインの名前

void __itt_frame_begin_v3(const __itt_domain *domain, __itt_id *id);

フレームインスタンスの始まりを定義します。ここで、__itt_frame_begin_v3呼び出しは、__itt_frame_end_v3呼び出しとペアにする必要があります。

同じ ID で連続して__itt_frame_begin_v3を飛び出すと、その ID で__itt_frame_end_v3を呼び出すまで無視されます。

[in]

domain

このフレーム・インスタンスのドメイン

[in]

id

このフレーム・インスタンスのインスタンス ID。NULL を指定できます。id パラメーターとして、NULL を指定した次の __itt_frame_end_v3 呼び出しで、フレームの終わりを指定します。

void __itt_frame_end_v3(const __itt_domain *domain, __itt_id *id);

フレームインスタンスの終わりを定義します。__itt_frame_begin_v3 は、__itt_frame_end_v3 とペアで使用する必要があります。ID を指定して最初に __itt_frame_end_v3 を呼び出すと、フレームが終了します。同じ ID による連続した呼び出しは、一致する __itt_frame_begin_v3 呼び出しがない場合と同様に無視されます。

[in]

domain

このフレーム・インスタンスのドメイン

[in]

id

このフレーム・インスタンスのインスタンス Id、または現在のインスタンスでは NULL です

ハードウェア・イベントベース・サンプリング収集ベースの解析タイプでは、64 個の異なるフレームドメインに制限されています。

フレーム API を使用するガイドライン

使用例

次の例は、フレーム API を使用して、指定したコード領域の経過時間を取得します。

#include "ittnotify.h" 

__itt_domain* pD = __itt_domain_create( L"My Domain" ); 
pD->flags = 1; /* ドメインを有効にする */ 
for (int i = 0; i < getItemCount(); ++i) { 
    __itt_frame_begin_v3(pD, NULL); 
    do_foo(); __itt_frame_end_v3(pD, NULL); 
} 
… 
__itt_frame_begin_v3(pD, NULL); do_foo_1(); 
__itt_frame_end_v3(pD, NULL); 
… 
__itt_frame_begin_v3(pD, NULL); do_foo_2(); 
__itt_frame_end_v3(pD, NULL);

関連情報