针对函数和加载对象显示三种类型的度量:互斥、相容和归属。互斥和相容度量可在显示度量的任何窗格中看到。归属度量只能在 [调用者-被调用者] 窗格中看到。
函数的互斥度量是从发生在此函数本身之中的事件计算得出,而不是从发生在该函数所调用的任一函数中的事件计算出来的。
互斥度量有助于您在当前消耗资源或出现问题的程序中找到函数、源代码行或指令。
互斥度量用图标 表示。
函数的相容度量是从函数本身、此函数所调用的任何函数以及这些函数所调用的一切函数(依此类推)之中发生的事件计算得出的。对于某一函数,由调用所产生的所有度量均包括在相容度量中。
相容度量有助于在当前耗用资源或出现问题的程序中找到调用树。函数的相容度量较高,意味着此函数以及它所调用的函数应成为您的调查目标。
相容度量用图标 表示。
归属度量在函数的调用者或函数本身和函数的被调用者之间划分该函数的相容度量。归属度量告知用户一个函数的相容度量中有多少相容度量是由于与另一函数之间的相互调用产生的。
对于函数的调用者,归属度量就是来自该调用者的调用所产生的函数相容度量的数量。函数所有调用者的归属度量总和等于此函数的相容度量。
对于被调用者,归属度量就是对该被调用者进行的调用所产生的函数相容度量的数量。被调用者的归属度量和函数互斥度量的总和等于函数的相容度量。
归属度量有助于在造成特定问题或占用资源的程序中标识路径。
归属度量以图标 表示。
函数 C 调用两个函数,即函数 D 和函数 E。函数 D 执行 10 秒。由于来自函数 C 的调用,函数 E 将执行 15 秒,并且由于来自另一函数(函数 B)的调用,它将执行 10 秒。函数 C 本身花 5 秒的时间执行。
本示例中的度量为执行时间(用户 CPU 时间)。函数 C 的互斥时间为 5 秒,函数 D 的互斥时间为 10 秒,函数 E 的互斥时间为 25 秒。由于函数 D 和 E 不调用任何其它函数,因此其相容时间等于其互斥时间。
函数 C 的相容时间为函数 C 中花费的时间(5 秒),加上由于来自函数 C 的调用而在函数 D 中花费的时间(10 秒),再加上在函数 E 中花费的时间(15 秒)。这些时间的合计(30 秒)就是函数 C 的相容度量。
函数 D 将为函数 C 的相容时间提供 10 秒。因此,其归属度量(作为函数 C 的被调用者)为 10 秒。函数 E 将为函数 C 的相容时间提供 15 秒。因此,其归属度量(作为函数 C 的被调用者)为 15 秒。
函数 E 的相容时间为 25 秒。函数 C 负责函数 E 相容时间中的 15 秒。因此,其归属度量(作为函数 E 的调用者)为 15 秒。函数 B 负责函数 E 相容时间中剩余的 10 秒。因此,其归属度量(作为函数 E 的调用者)为 10 秒。