gcc 编译优化

man gcc 去查
-O  -O0  -O1  -O2  -O3  -Os  -Ofast  -Og

Options That Control Optimization


  • 具体是哪些集合
-Ox 是 一些优化选项的集合

gcc -c -Q -O2 --help=optimizers

可通过这个验证
	-O2 -O0 同时使用的时候 , 命令行参数最后面的有效
	从O0到O1,O2,O3,是一个开启的优化选项逐步加大的过程

优化选项集合

-Ox 是 一些优化选项的集合
  • 无Ox
-O0 效果一样
  • 多个 Ox
如果您使用多个-O选项,不管有没有级别编号,最后一个这样的选项是有效的。
  • O0
减少了编译时间,使调试产生了预期的结果。这是默认设置。

在没有任何优化选项的情况下,编译器的目标是降低编译成本,并使调试产生预期的结果。
语句是独立的:
  如果在语句之间使用断点停止程序,则可以为任何变量指定一个新值,或将程序计数器更改为函数中的任何其他语句,并从源代码中获得预期的结果。

启用优化标志会使编译器试图提高性能和/或代码大小,但会以牺牲编译时间和调试程序的能力为代价。

  • Og
  应该是标准编辑编译调试周期的优化级别选择,提供合理的优化级别,同时保持快速编译和良好的调试体验。
  
  在生成可调试代码时,它比-O0更好,因为某些收集调试信息的编译器过程在-O0处被禁用。

  与-O0类似,-Og完全禁用了许多优化过程,因此控制它们的单个选项没有效果。
  除此之外,-Og将启用所有-O1优化标志,但可能干扰调试的标志除外:
     -fbranch-count-reg  -fdelayed-branch -fif-conversion  -fif-conversion2 -finline-functions-called-once
     -fmove-loop-invariants  -fssa-phiopt -ftree-bit-ccp  -ftree-pta  -ftree-sra
  • O
-O1 效果一样
  • O1
优化编译需要更多的时间,对于一个大函数来说,需要更多的内存。
使用-O1,编译器试图减少代码大小和执行时间,而不执行任何需要大量编译时间的优化。
-O1打开以下优化标志:
  • Os
优化大小 
除了那些经常增加代码大小的优化外,Os支持所有O2优化:
  • O2
优化甚至更多。
GCC执行几乎所有不涉及空间速度权衡的受支持优化。
与-O1相比,此选项增加了编译时间和生成代码的性能。
-O2打开-O1指定的所有优化标志。它还打开以下优化标志:
  • O3
-O3打开-O2指定的所有优化,并打开以下优化标志:
  • Ofast
无视严格的标准遵从性
-Ofast支持所有O3优化。
它还支持对所有标准兼容程序无效的优化。

优化选项

Options of the form -fflag specify machine-independent flags.  
-fflag 可以指定 machine-independent 的优化选项
Most flags have both positive and negative forms; 
大多数旗子有正面和负面两种形式
the negative form of -ffoo is -fno-foo.   // -fxxxx -fno-xxxx
In the table below, only one of the forms is listed---the one you typically use.  
You can figure out the other form by either removing no- or adding it.

The following options control specific optimizations. 
以下选项控制特定的优化
They are either activated by -O options or are related to ones that are. 
它们要么由-O选项激活,要么与其他选项相关。
You can use the following flags in the rare cases when "fine-tuning" of optimizations to be performed is desired. 
在需要对优化进行“微调”的极少数情况下,可以使用以下标志。

-fno-defer-pop 			// -fdefer-pop 
-fforward-propagate 	// -fno-forward-propagate 
...

おすすめ

転載: blog.csdn.net/u011011827/article/details/121077950