図 2–1 は、排他的、包括的、属性メトリックを完全な呼び出しツリーで表しています。ここでは、中央の関数の関数 C に注目します。
プログラムの擬似コードは、図のあとに示されています。
Main 関数は、関数 A および関数 B を呼び出し、 Main 関数の包括的メトリックのうちの関数 A の 10 単位と関数 B の 20 単位の原因となっています。これらは、Main 関数の呼び出し先の属性メトリックです。その合計 (10+20) に Main 関数の排他的メトリックを加算すると、Main 関数の包括的メトリック (32) に等しくなります。
関数 A は関数 C の呼び出しにすべての時間を使用するため、排他的メトリックは 0 単位です。
関数 C は、関数 A および 関数 B の 2 つの関数によって呼び出され、関数 C の包括的メトリックのうちの関数 A の 10 単位と関数 B の 15 単位の原因になっています。これらは呼び出し元の属性メトリックです。その合計 (10+15) は、関数 C の包括的メトリック (25) に等しくなります。
呼び出し元の属性メトリックは、関数 A と B の包括的メトリックと排他的メトリックの差と等しくなります。これは、関数 A と B は関数 C のみを呼び出すことを意味します。実際、これらの関数がほかの関数を呼び出している場合がありますが、時間が短すぎて、実験に現れることはありません。
関数 C は、関数 E および関数 F の 2 つの関数を呼び出し、関数 C の包括的メトリックのうちの関数 E の 10 単位と関数 F の 10 単位の原因となっています。これらは、呼び出し先の属性メトリックです。その合計 (10+10) に関数 C の排他的メトリック (5) を加算すると、関数 C の包括的メトリック (25) に等しくなります。
関数 E と関数 F では、呼び出し先の属性メトリックと呼び出し元の包括的メトリックは等しくなります。これは、関数 E と関数 F が関数 C によってのみ呼び出されることを意味します。関数 E では、排他的メトリックと包括的メトリックが同じですが、関数 F では異なります。これは、関数 F はほかの関数 (関数 G) を呼び出しますが、関数 E はそうしないためです。
このプログラムの擬似コードを次に示します。
main() { A(); /2 単位の処理を行います。/ B(); } A() { C(10); } B() { C(7.5); /5 単位の処理を行います。/ C(7.5); } C(arg) { /C 自体で 20 %、E の呼び出しに 40 %、F の呼び出しに 40 % を実行し、合計「arg」単位の処理を行います。/ }