コール ツリー ビュー - プロファイラーの .NET メモリ インストルメンテーション データ

Visual Studio 2017 RC の最新のドキュメントの詳細については、Visual Studio 2017 RC ドキュメントをご参照ください。

インストルメンテーション メソッドを使用して収集された .NET メモリの割り当てプロファイル データのコール ツリー ビューには、プロファイルされたアプリケーションで走査された関数の実行パスが表示されます。 ツリーのルートは、アプリケーションまたはコンポーネントへのエントリ ポイントです。 各関数ノードには、呼び出したすべての関数と、その関数の .NET メモリ データおよびタイミング データが表示されます。

コール ツリー ビュー内の値は、コール ツリー内の親関数から呼び出された関数のインスタンスに対応します。 割合の値を計算するには、関数インスタンスの値と、プロファイリング実行の割り当ての総数または合計サイズを比較します。

実行ホット パスの強調表示

コール ツリー ビューでは、最大または最多のメモリ オブジェクトを作成したプロセスまたは関数の実行パスを展開および強調表示できます。 最もアクティブなパスを表示するには、プロセスまたは関数を右クリックし、[ホット パスの展開] をクリックします。

コール ツリーのルート ノードの設定

プロファイリング実行の各プロセスは、ルート ノードとして表示されます。 コール ツリー ビューの開始ノードを設定するには、開始ノードとして設定するノードを右クリックし、[ルートの設定] をクリックします。

ルート ノードを設定すると、選択したノードのサブツリーを除く他のすべてのエントリはビューから除外されます。 ルート ノードを表示していた元のノードに戻すことができます。[コール ツリー] ビューのウィンドウ内の任意の場所で右クリックし、[ルートのリセット] をクリックします。

一般

説明
[関数名] 関数の名前。
[関数アドレス] 関数のアドレス。
[関数行番号] ソース ファイルのこの関数の開始行番号。
[呼び出し数] この関数への呼び出しの総数。
[ソース ファイル] この関数の定義を含むソース ファイル。
[モジュール名] 関数を含むモジュールの名前。
[モジュール パス] 関数を含むモジュールのパス。
プロセス ID プロファイリング実行のプロセス ID (PID)。
プロセス名 プロセスに割り当てられた名前。
[プローブ オーバーヘッド時間 (関数のみ)] インストルメンテーションによって発生したこの関数のオーバーヘッド時間。 プローブ オーバーヘッドはすべての排他時間から減算されています。
[プローブ オーバーヘッド時間 (子を含む)] インストルメンテーションによって発生したこの関数とその子関数のオーバーヘッド時間。 プローブ オーバーヘッドはすべての包括時間から減算されています。
関数のコンテキスト:

- 0 - 現在の関数
- 1 - 現在の関数を呼び出す関数
- 2 - 現在の関数で呼び出される関数

VSPerfReport コマンド ライン レポートでのみ有効です。
ルート関数名 現在の関数の名前。 VSPerfReport コマンド ライン レポートでのみ有効です。

.NET メモリ値

関数の包括 .NET メモリ値は、関数とその関数から呼び出された関数によって作成されたオブジェクトの数 (割り当て) とサイズ (バイト) を示します。

排他メモリ値は、関数本体内のコードによって作成されたオブジェクトの数とサイズを示しますが、その関数から呼び出された関数によって作成された数とサイズは含まれません。

説明
[割り当て数 (子を含む)] コール ツリーの親関数から呼び出されたこの関数のインスタンスによって割り当てられたオブジェクト数。 この数値には、子関数による割り当てが含まれます。
[割り当て % (子を含む)] プロファイリング実行で作成されたすべてのオブジェクトに対する、コール ツリーの親関数から呼び出された関数インスタンスの包括的割り当てであったオブジェクトの割合。
[割り当て数 (関数のみ)] コール ツリーの親関数から呼び出されたこの関数のインスタンスによって割り当てられたオブジェクト数。 この数値には、子関数による割り当ては含まれません。
[割り当て % (関数のみ)] プロファイリング実行で作成されたすべてのオブジェクトに対する、コール ツリーの親関数から呼び出された関数インスタンスの排他的割り当てであったオブジェクトの割合。

包括経過値

包括経過値は、関数が呼び出し履歴に存在していた時間を示します。 この時間には、関数から呼び出された関数、およびオペレーティング システムの呼び出し (コンテキストの切り替え、入出力操作など) で費やされた時間が含まれます。

説明
[経過時間 (子を含む)] コール ツリーの親関数から呼び出されたときの、この関数へのすべての呼び出しの包括経過時間の合計。
[包括経過時間 %] プロファイリング実行の包括経過時間の合計に対する、コール ツリーの親関数から呼び出されたときの、この関数に費やされた包括経過時間の合計の割合。
[平均経過時間 (子を含む)] コール ツリーの親関数から呼び出されたときの、この関数への 1 回の呼び出しの平均包括経過時間。
[最大経過時間 (子を含む)] コール ツリーの親関数から呼び出されたときの、この関数への 1 回の呼び出しの最大包括経過時間。
[最小経過時間 (子を含む)] コール ツリーの親関数から呼び出されたときの、この関数への 1 回の呼び出しの最小包括経過時間。

排他経過値

排他経過値は、関数が呼び出し履歴の最上位で直接実行されていた時間を示します。 この時間には、オペレーティング システムの呼び出し (コンテキストの切り替え、入出力操作など) で費やされた時間が含まれますが、 この関数から呼び出された関数で費やされた時間は含まれません。

説明
[経過時間 (関数のみ)] コール ツリーの親関数から呼び出されたときの、この関数へのすべての呼び出しの排他経過時間の合計。
[排他経過時間 %] プロファイリング実行の排他経過時間の合計に対する、コール ツリーの親関数から呼び出されたときの、この関数に費やされた排他経過時間の合計の割合。
[平均経過時間 (関数のみ)] コール ツリーの親関数から呼び出されたときの、この関数への 1 回の呼び出しの平均排他経過時間。
[最大経過時間 (関数のみ)] コール ツリーの親関数から呼び出されたときの、この関数への 1 回の呼び出しの最大排他経過時間。
[最小経過時間 (関数のみ)] コール ツリーの親関数から呼び出されたときの、この関数への 1 回の呼び出しの最小排他経過時間。

アプリケーション包括値

アプリケーション包括値は、関数が呼び出し履歴に存在していた時間を示します。 この時間には、オペレーティング システムの呼び出し (コンテキストの切り替え、入出力操作など) で費やされた時間は含まれません。 この時間には、この関数によって呼び出された子関数で費やされた時間が含まれます。

説明
[アプリケーション時間 (子を含む)] コール ツリーの親関数から呼び出されたときの、この関数へのすべての呼び出しのアプリケーション包括時間の合計。
[アプリケーション包括時間 %] プロファイリング実行の包括経過時間の合計に対する、コール ツリーの親関数から呼び出されたときの、この関数に費やされたアプリケーション包括時間の合計の割合。
[平均アプリケーション時間 (子を含む)] コール ツリーの親関数から呼び出されたときの、この関数への 1 回の呼び出しの平均アプリケーション包括時間。
[最大アプリケーション時間 (子を含む)] コール ツリーの親関数から呼び出されたときの、この関数への 1 回の呼び出しの最大アプリケーション包括時間。
[最小アプリケーション時間 (子を含む)] コール ツリーの親関数から呼び出されたときの、この関数への 1 回の呼び出しの最小アプリケーション包括時間。

アプリケーション排他値

アプリケーション排他値は、関数で費やされた時間を示しますが、その関数から呼び出された子関数で費やされた時間は含まれません。 また、オペレーティング システムの呼び出し (コンテキストの切り替え、入出力操作など) で費やされた時間も含まれません。

説明
[アプリケーション時間 (関数のみ)] コール ツリーの親関数から呼び出されたときの、この関数へのすべての呼び出しのアプリケーション排他時間の合計。
[アプリケーション排他時間 %] プロファイリング実行の排他経過時間の合計に対する、コール ツリーの親関数から呼び出されたときの、この関数に費やされたアプリケーション排他時間の合計の割合。
[平均アプリケーション時間 (関数のみ)] コール ツリーの親関数から呼び出されたときの、この関数への 1 回の呼び出しの平均アプリケーション排他時間。
[最大アプリケーション時間 (関数のみ)] コール ツリーの親関数から呼び出されたときの、この関数への 1 回の呼び出しの最大アプリケーション排他時間。
[最小アプリケーション時間 (関数のみ)] コール ツリーの親関数から呼び出されたときの、この関数への 1 回の呼び出しの最小アプリケーション排他時間。