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