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 选项且 --vectypes=off,则为默认值)
- --opt_level=0 或 -O0(如果未使用 --opt_level 选项且 --vectypes=on,则为默认值)
- --opt_level=1 或 -O1 执行所有 --opt_level=0 (-O0) 优化,加上:
- --opt_level=2 或 -O2(如果在没有设置的情况下使用 --opt_level 选项,则为默认值)执行所有 --opt_level=1 (-O1) 优化,加上:
- --opt_level=3 或 -O3 执行所有 --opt_level=2 (-O2) 优化,加上:
- --opt_level=4 或 -O4
有关 --opt_level 和 --opt_for_speed 选项以及各种 pragma 如何影响内联的详细信息,请参阅节 3.10。
调试默认启用,并且优化级别不受调试信息生成的影响。
注: 不要降低优化级别以控制代码大小:要减小代码大小,请不要降低 --opt_level 优化级别。相反,请使用 --opt_for_speed 选项来控制代码大小/性能权衡。更高的优化级别(--opt_level 或 -O)与偏低的 --opt_for_speed 级别(0、1 或 2)相结合会产生更小的代码大小。