Oracle Solaris Studio 12.2:性能分析器

外联函数

外联函数可以在反馈优化编译期间创建。在“源”标签和“反汇编”标签中,外联函数显示为特殊的索引行。在“源”标签中,在已转换为外联函数的代码块中会显示一条注释。


                   Function binsearchmod inlined from source file ptralias2.c into the 
0.       0 .         58.         if( binsearchmod( asize, &element ) ) {
0.240    0.240       59.             if( key != (element << 1) ) {
0.       0.          60.                 error |= BINSEARCHMODPOSTESTFAILED;
                        <Function: main -- outline code from line 60 [_$o1B60.main]>
0.040    0.040     [ 61]                 break;
0.       0.          62.             }
0.       0.          63.         }

在“反汇编”标签中,外联函数通常在文件结尾处显示。


                        <Function: main -- outline code from line 85 [_$o1D85.main]>
0.       0.             [ 85] 100001034:  sethi       %hi(0x100000), %i5
0.       0.             [ 86] 100001038:  bset        4, %i3
0.       0.             [ 85] 10000103c:  or          %i5, 1, %l7
0.       0.             [ 85] 100001040:  sllx        %l7, 12, %l5
0.       0.             [ 85] 100001044:  call        printf ! 0x100101300
0.       0.             [ 85] 100001048:  add         %l5, 336, %o0
0.       0.             [ 90] 10000104c:  cmp         %i3, 0
0.       0.             [ 20] 100001050:  ba,a        0x1000010b4
                        <Function: main -- outline code from line 46 [_$o1A46.main]>
0.       0.             [ 46] 100001054:  mov         1, %i3
0.       0.             [ 47] 100001058:  ba          0x100001090
0.       0.             [ 56] 10000105c:  clr         [%i2]
                        <Function: main -- outline code from line 60 [_$o1B60.main]>
0.       0.             [ 60] 100001060:  bset        2, %i3
0.       0.             [ 61] 100001064:  ba          0x10000109c
0.       0.             [ 74] 100001068:  mov         1, %o3

外联函数的名称显示在方括号中,并对外联代码段的有关信息进行编码,这些信息包括从中提取代码的函数名称以及源代码中该段的起始行号。这些重整名称 (mangled name) 可能随发行版的不同而不同。分析器提供了函数名称的可读版本。有关更多详细信息,请参阅外联函数

如果在收集应用程序的性能数据时调用了外联函数,分析器会在带注释的反汇编代码中显示一个特殊行,以显示该函数的非独占度量。有关更多详细信息,请参见非独占度量