Sun Studio 12:C++ 用户指南

A.2.159.1 缺省值

如果未指定 -xprefetch,则假定为 -xprefetch=no%auto,explicit

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

除非使用不带任何参数或具有autoyes 参数的 -xprefetch 进行显式覆盖,否则使用缺省值 no%auto。例如,-xprefetch=explicit-xprefetch=explicit,no%auto 相同。

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

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

交互

该选项会累积而不覆盖。

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

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

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

只有启用了自动预取时,才可以使用 latx:factor。即,latx:factor 只有与 yesauto 结合使用时才有效,如 -xprefetch=yes,latx:factor

警告

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

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