性能分析器可计算三种类型的函数级度量:独占度量、非独占度量和归属度量。
对于只出现在调用堆栈底部的函数(叶函数),独占度量和非独占度量是相同的。
对于装入对象,也要计算独占度量和非独占度量。装入对象的独占度量通过累加装入对象中所有函数上函数级别的度量计算得出。装入对象的非独占度量与函数的非独占度量的计算方法相同。
函数的独占度量和非独占度量给出了有关所有通过函数记录的路径信息。归属度量给出了有关通过函数记录的特定路径的信息。这些度量显示了度量在多大程度上来自特定函数调用。调用中所涉及的两个函数称为调用方和被调用方。对于调用树中的每个函数:
函数调用方的归属度量说明了函数的非独占度量在多大程度上归因于来自每个调用方的调用。调用方的归属度量的总和等于函数的非独占度量。
函数的被调用方的归属度量说明了函数的非独占度量在多大程度上来自对每个被调用方的调用。它们的和加上函数的独占度量等于函数的非独占度量。
各度量间的关系可通过以下等式表示:
通过比较调用方或被调用方的归属度量和非独占度量,可以得到以下进一步的信息:
调用方的归属度量和非独占度量之间差额说明了度量在多大程度上来自对其他函数的调用以及调用方本身的工作。
被调用方的归属度量和非独占度量之间的差额说明了被调用方的非独占度量在多大程度上来自从其他函数对它的调用。