Oracle® Solaris Studio 12.4:性能分析器

退出打印视图

更新时间: 2015 年 1 月
 
 

函数级度量:独占、非独占和归属

性能分析器可计算三种类型的函数级度量:独占度量、非独占度量和归属度量。

  • 函数的独占度量通过函数本身内部发生的事件计算得出:这种度量不包括来自对其他函数调用的度量。

  • 非独占度量通过函数本身和其调用的函数内部发生的事件计算得出:这种度量包括来自对其他函数调用的度量。

  • 归属度量说明了非独占度量在多大程度上来自对(或从)其他函数的调用:这种度量归属到其他函数的度量。

对于只出现在调用堆栈底部的函数(叶函数),独占度量和非独占度量是相同的。

对于装入对象,也要计算独占度量和非独占度量。装入对象的独占度量通过累加装入对象中所有函数上函数级别的度量计算得出。装入对象的非独占度量与函数的非独占度量的计算方法相同。

函数的独占度量和非独占度量给出了有关所有通过函数记录的路径信息。归属度量给出了有关通过函数记录的特定路径的信息。这些度量显示了度量在多大程度上来自特定函数调用。调用中所涉及的两个函数称为调用方被调用方。对于调用树中的每个函数:

  • 函数调用方的归属度量说明了函数的非独占度量在多大程度上归因于来自每个调用方的调用。调用方的归属度量的总和等于函数的非独占度量。

  • 函数的被调用方的归属度量说明了函数的非独占度量在多大程度上来自对每个被调用方的调用。它们的和加上函数的独占度量等于函数的非独占度量。

各度量间的关系可通过以下等式表示:

image:显示各度量间关系的等式

    通过比较调用方或被调用方的归属度量和非独占度量,可以得到以下进一步的信息:

  • 调用方的归属度量和非独占度量之间差额说明了度量在多大程度上来自对其他函数的调用以及调用方本身的工作。

  • 被调用方的归属度量和非独占度量之间的差额说明了被调用方的非独占度量在多大程度上来自从其他函数对它的调用。

    要定位可改善程序性能的位置,请执行以下操作:

  • 使用独占度量定位具有高度量值的函数。

  • 使用非独占度量确定程序中哪个调用序列导致高度量值。

  • 使用归属度量跟踪导致高度量值的函数的特定调用序列。