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