该选项指示编译器将函数和/或数据变量放置到单独的分段中,这使链接程序(使用链接程序的 -M 选项指定的映射文件中的指示)将这些段重新排序以优化程序性能。通常,该优化仅在缺页时间构成程序运行时间的一大部分时才有效。
对变量重新排序有助于解决对运行时性能产生负面影响的以下问题:
在内存中存放位置很近的无关变量会造成缓存和页的争用。
在内存中存放位置很远的相关变量会造成不必要的过大工作集。
未用到的弱变量副本会造成不必要的过大工作集,从而降低有效数据密度。
为优化性能而对变量和函数进行重新排序时,需要执行以下操作:
使用 -xF 进行编译和链接。
按照《程序性能分析工具》手册中有关如何生成用于函数的映射文件的说明进行操作,或按照《链接程序和库指南》中有关如何生成用于数据的映射文件的说明进行操作。
使用通过链接程序的 -M 选项生成的新映射文件重新链接。
在分析器下重新执行以验证是否增强。
v 可以是下列其中一个或多个值:
表 A–33 -xF 值
值 |
含义 |
---|---|
[no%]func |
[不] 将函数分段到单独的段中。 |
[no%]gbldata |
[不] 将全局数据(具有外部链接的变量)分段到单独的段中。 |
[no%]lcldata |
[不] 将局部数据(具有内部链接的变量)分段到单独的段中。 |
%all |
分段函数、全局数据和局部数据。 |
%none |
不分段。 |
如果未指定 -xF,则缺省值为 -xF=%none。如果指定了没有任何参数的 -xF,则缺省值为 -xF=%none,func。
使用 -xF=lcldata 会限制某些地址计算优化,因此,只应在必要时才使用该标志。
analyzer(1)、debugger(1) 和 ld(1) 手册页