Oracle Solaris Studio 12.2:C++ 用户指南

A.2.167.1 缺省值

缺省值为 -xprefetch=auto,explicit。此缺省值会对实质上具有非线性内存访问模式的应用程序造成负面影响。要覆盖该缺省值,请指定 -xprefetch=no%auto,no%explicit

除非使用参数 no%auto 或参数 no 进行显式覆盖,否则使用缺省值 auto。例如,-xprefetch=explicit-xprefetch=explicit,auto 相同。

除非使用参数 no%explicitno 进行显式覆盖,否则使用缺省值 explicit。例如,-xprefetch=auto-xprefetch=auto,explicit 相同。

如果仅指定了 -xprefetch,则假定为 -xprefetch=auto,explicit

如果启用了自动预取,但未指定延迟因子,则假定 -xprefetch=latx:1.0

交互

该选项会累积而不覆盖。

sun_prefetch.h 头文件提供了用于指定显式预取指令的宏。这些预取可能位于对应于宏出现位置的可执行文件中。

要使用显式预取指令,必须在适当的体系结构上,将 sun_prefetch.h 包含进来,并且从编译器命令中排除 -xprefetch 或者使用 -xprefetch-xprefetch=auto,explicit-xprefetch=explicit

如果调用宏并包含 sun_prefetch.h 头文件,但指定 -xprefetch=no%explicit,那么显式预取将不会出现在可执行文件中。

只有启用了自动预取时,才可以使用 latx:factor。即,除非将 latx:factor-xprefetch=auto,latx:factor 结合使用,否则它会被忽略。

警告

显式预取只应在度量支持的特殊环境下使用。

因为编译器可以在众多计算机与应用程序间调整预取机制以获得最佳性能,所以当性能测试指示性能明显提高时,应当只使用 -xprefetch=latx:factor。假定的预取延迟在不同发行版本中是不同的。因此,无论何时切换到不同的发行版本,强烈建议重新测试延迟因子对性能的影响。