パフォーマンスアナライザが計算する関数レベルのメトリックには、排他的メトリック、包括的メトリック、および属性メトリックの 3 種類があります。
関数の排他的メトリックは、関数自体の内部で発生するイベントにより計算されます。これには、ほかの関数の呼び出しから発生したメトリックは含まれません。
包括的メトリックは、関数の内部で発生するイベントと、その関数から呼び出す関数により計算されます。これには、ほかの関数の呼び出しから発生したメトリックが含まれます。
属性メトリックは、どれだけの包括的メトリックが、別の関数からの呼び出しによるものか、または別の関数の呼び出しによるものかを示します。つまり、属性メトリックは別の関数に起因するメトリックです。
呼び出しスタックのいちばん下にのみ現れる関数 (リーフ関数) では、その関数の排他的および包括的メトリックは同じになります。
排他的および包括的メトリックは、ロードオブジェクトについても計算されます。ロードオブジェクトの排他的メトリックは、そのロードオブジェクト内の全関数の関数レベルのメトリックを集計することによって計算されるメトリックです。ロードオブジェクトの包括的メトリックは、関数に対するのと同じ方法で計算されるメトリックです。
関数の排他的および包括的メトリックは、その関数を通るすべての記録経路に関する情報を提供します。属性メトリックは、関数を通る特定の経路に関する情報を提供します。その情報は、どれだけのメトリックが特定の関数呼び出しが原因で発生したかを示します。その呼び出しに関係する 2 つの関数は、呼び出し元および呼び出し先として表されます。 呼び出しツリー内のそれぞれの関数では次のことが言えます。
関数の呼び出し元の属性メトリックスは、その関数の包括的メトリックのうち、各呼び出し元からの呼び出しが原因になっているメトリックスを示します。呼び出し元の属性メトリックスを合計したものが、関数の包括的メトリックです。
関数の呼び出し先の属性メトリックスは、その関数の包括的メトリックのうち、各呼び出し先への呼び出しが原因になっているメトリックスを示します。それらの合計に、その関数の排他的メトリックを加えたものが、その関数の包括的メトリックに等しくなります。
メトリック間の関係は、次の等式で表すことができます。
呼び出し元または呼び出し先の属性メトリックと包括的メトリックを比較すると、さらに情報が得られます。
呼び出し元の属性メトリックとその包括的メトリックの差は、ほかの関数への呼び出しおよびその呼び出し元自体の動作が原因で発生したメトリックを示します。
呼び出し先の属性メトリックとその包括的メトリックの差は、その呼び出し先の包括的メトリックのうち、ほかの関数からのその呼び出し先への呼び出しが原因で発生したメトリックを示します。