フレーム 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_end_v3 呼び出しは、__itt_frame_begin_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; /* enable domain */

    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);

関連情報