n 可以是 1、2、3、4 或 5。在 -O 和 n 之间不允许有空格。
如果未指定 -O[n],则仅执行非常基本级别的优化,即限于局部公共子表达式消除和无用代码分析。与不使用优化相比,使用优化级别进行优化可以大大提高程序的性能。对于大多数程序,建议使用 -O(它设置 -O3)或 -fast(它设置 -O5)。
每个 -On 级别的优化都包括在低于它的级别上执行的优化。通常,编译程序时使用的优化级别越高,获得的运行时性能也越高。但是,优化级别越高,编译时间会越长,可执行文件也越大。
使用 -g 进行调试不会抑制 -On,但是 -On 在某些方面会限制 -g;请参见 dbx 文档。
-O3 和 -O4 选项降低调试的效用,这样您无法从 dbx 显示变量,但仍可以使用 dbx where 命令获取符号回扫。
如果优化器内存不足,则它尝试在较低优化级别上再次进行,即继续在原始级别上对后续例程进行编译。
有关优化的详细信息,请参见《Fortran 编程指南》的“性能分析”和“性能与优化”这两章。
此选项与 -O3 等效。
提供最少的语句级优化。
如果更高的级别会导致编译时间过长,或者超过了可用交换空间,请使用此选项。
启用基本块级别的优化。
通常,此级别产生的代码大小是最小的。(另请参见 -xspace。)
–O3 的使用应优先于 -O2,除非 -O3 导致编译时间过长、超过交换空间或生成过大的可执行文件。
在函数级别上增加循环解开和全局优化。自动添加 -depend。
通常,-O3 生成的可执行文件较大。
通常,-O4 生成的可执行文件较大(因为进行了内联)。
-g 选项会禁止上述的 -O4 自动内联。–xcrossfile 可增加使用 -O4 情况下的内联范围。
尝试主动优化。
仅适用于程序中占用计算时间最多的小段代码。-O5 的优化算法要花费更多的编译时间,而且在用于过大的源程序代码段时会降低性能。
如果使用分析反馈进行优化,则此级别上的优化更有可能提高性能。请参见 -xprofile=p。