プロファイリング ツールのインストルメンテーション データ値について
Visual Studio の インストルメンテーション プロファイル方式では、プロファイリングされたアプリケーションの関数呼び出し、行、および命令について、詳細なタイミング情報を記録します
要件
- Visual Studio Ultimate, Visual Studio Premium, Visual Studio Professional
インストルメンテーション方式では、プロファイルされるバイナリの、これらの関数から他の関数の呼び出しの前後の対象の関数の開始時と終了時にコードを挿入します。挿入されるコードは次のものを記録します。
この収集イベントとその前の収集イベントの間の間隔。
オペレーティング システムがその間に操作を実行したかどうか。たとえば、オペレーティング システムはディスクに対して読み取りまたは書き込みを行うこともありますし、対象のスレッドと別のプロセスの別のスレッドとの間の切り替えを行うこともあります。
要件
- Visual Studio Ultimate, Visual Studio Premium, Visual Studio Professional
各間隔について、プロファイラー分析は間隔の最後に存在していた呼び出し履歴を再構築します。呼び出し履歴とは、ある時点でプロセッサ上でアクティブになっている関数のリストです。1 つの関数 (現在の関数) だけがコードを実行しており、それ以外の関数は、現在の関数の呼び出しに至る一連の関数呼び出しです (呼び出し履歴)。
間隔が記録されたときの呼び出し履歴上の各関数について、プロファイラー分析は関数の 4 つのデータ値の 1 つ以上に間隔を追加します。分析は、次の 2 つの基準に基づいて間隔を関数のデータ値に追加します。
間隔がその関数のコードで発生したか、それとも子関数 (その関数によって呼び出された関数) で発生したか。
オペレーティング システムのイベントが間隔内で発生したか。
関数またはデータ範囲の間隔のデータ値には、包括経過、排他経過、アプリケーション包括、およびアプリケーション排他という名前があります。
関数の間隔はすべて、包括経過データ値に追加されます。
間隔がその関数のコード内で (子関数内ではなく) 発生した場合、その間隔は関数の排他経過データ値に追加されます。
オペレーティング システム イベントが間隔内で発生しなかった場合、その間隔はアプリケーション包括データ値に追加されます。
オペレーティング システム イベントが間隔内で発生せず、間隔が関数コードを直接実行しているときに (つまり子関数内ではなく) 発生した場合、その間隔はアプリケーション排他データ値に追加されます。
プロファイリング ツールのレポートは、プロファイリング セッション自体の関数、およびセッションのプロセス、スレッド、バイナリの合計値を集約します。
包括経過値
ある関数およびその子関数の実行に費やされた合計時間。
包括経過値には、関数コードを直接実行するのに費やされた間隔と、対象関数の子関数の実行に費やされた間隔が含まれます。オペレーティング システムの待機を含む関数またはその子関数の間隔も包括経過値に含まれます。
排他経過値
子関数で費やされた時間を除く、ある関数の実行に費やされた合計時間。
排他経過値には、オペレーティング システム イベントが間隔内で発生したかどうかに関係なく、関数コードを直接実行するのに費やされた間隔が含まれます。対象の関数によって呼び出された子関数で費やされた間隔はすべて排他経過値に含まれません。
アプリケーション包括値
オペレーティング システム イベントで費やされた時間を除く、関数およびその子関数の実行に費やされた時間。
アプリケーション包括値には、オペレーティング システム イベントを含む間隔は含まれません。アプリケーション包括値には、間隔がある関数のコードを直接実行するのに費やされたかまたは対象関数の子関数に費やされたかに関係なく、関数の実行に費やされた他のすべての間隔が含まれます。
アプリケーション排他値
子関数で費やされた時間とオペレーティング システム イベントで費やされた時間を除いた、ある関数の実行に費やされた時間。
アプリケーション排他値には、オペレーティング システム イベントを含む間隔、または関数によって呼び出された関数の実行に費やされた間隔は含まれません。アプリケーション排他値には、関数コードを直接実行するのに費やされ、オペレーティング システム イベントを含まなかった間隔だけが含まれます。
包括経過パーセント
プロファイリング セッションの包括経過値の合計に対する関数、モジュール、スレッド、またはプロセスの包括経過値の割合。
100 * 関数包括経過 / セッション包括経過
排他経過パーセント
プロファイリング セッションの包括経過値の合計に対する関数、モジュール、スレッド、またはプロセスの排他経過値の割合。
100 * 関数排他経過 / セッション包括経過
アプリケーション包括パーセント
プロファイリング セッションのアプリケーション包括値の合計に対する関数、モジュール、スレッド、またはプロセスのアプリケーション包括値の割合。
100 * 関数アプリケーション包括 / セッション アプリケーション包括
アプリケーション排他パーセント
プロファイリング セッションのアプリケーション包括値の合計に対する関数、モジュール、スレッド、またはプロセスのアプリケーション排他値の割合。
100 * 関数アプリケーション排他 / セッション アプリケーション包括