C/C++ 编译器能够执行各种优化,这些优化由优化器和代码生成器执行:
优化器 在独立优化通道中执行高级别优化。使用更高的优化级别(例如 --opt_level=2 和 --opt_level=3)以获得最优代码。
代码生成器 执行多个额外的优化。这些是特定于目标的低级别优化。无论您是否调用优化器,代码生成器都会执行这些优化,并且这些优化会始终启用,不过在使用优化器时它们会更高效。
调用优化的最简单方法是使用编译器程序,在编译器命令行上指定 --opt_level=n 选项。您可以使用 -On 作为 --opt_level 选项的别名。n 表示优化级别(0、1、2、3),其控制优化的类型和程度。
- --opt_level=off 或 -Ooff
- --opt_level=0 或 -O0
- --opt_level=1 或 -O1 执行所有 --opt_level=0 (-O0) 优化,加上:
- --opt_level=2 或 -O2执行所有 --opt_level=1 (-O1) 优化,加上:
- --opt_level=3 或 -O3 执行所有 --opt_level=2 (-O2) 优化,加上:
有关 --opt_level 和 --opt_for_speed 选项以及各种 pragma 如何影响内联的详细信息,请参阅节 3.11。
调试默认启用,并且优化级别不受调试信息生成的影响。
注: 不要降低优化级别以控制代码大小:要减小代码大小,请不要降低优化级别。相反,请使用 --opt_for_space 选项来控制代码大小/性能权衡。更高的优化级别(--opt_level 或 -O)与偏高的 --opt_for_space 级别相结合会产生最小的代码大小。有关更多信息,请参阅
节 4.9。
注: --opt_level=n (-On) 选项适用于汇编优化器:还应该将 --opt_level=n (-O) 选项与汇编优化器一起使用。汇编优化器不会执行本文描述的所有优化,但重要优化(例如软件流水线和循环展开)需要 --opt_level 选项。