GCC -O 优化等级详解

GCC提供选项控制代码的优化等级:

这些选项可以实现不同程度的优化。

没有任何优化选项的话,编译时的目标是降低编译成本,并使调试产生预期的结果。语句是独立的:如果你使程序停止在语句之间设置的断点处,你可以改变任何变量的值或者改变程序计数器的值使程序执行任意函数中的语句并得到源代码中期望的结果。

打开优化标志使编译器尝试以编译时间和可能的调试程序的能力为代价来改进性能和/或代码大小。

编译器根据程序的信息执行优化。 一次编译多个文件生成单个可执行文件的模式允许编译器在编译每个文件时使用从所有文件中获取的信息。

并非所有优化都由标志直接控制。以下仅列出具有标志的优化。

只有在命令行上设置-O或其他等级的优化选项时,才会启用大多数优化。 否则,即使指定了单独的优化标志,它们也会被禁用。

根据目标和GCC的配置方式,可以在每个-O级别启用略有不同的优化集。


-O、-O1:优化编译需要更多时间,并且大型函数需要更多内存。使用-O选项,编译器会尝试减小代码尺寸减少执行时间,不执行任何需要大量编译时间的优化。 

-O选项打开了如下优化标志:

-fauto-inc-dec -fbranch-count-reg -fcombine-stack-adjustments -fcompare-elim -fcprop-registers -fdce -fdefer-pop
-fdelayed-branch -fdse -fforward-propagate -fguess-branch-probability -fif-conversion2 -fif-conversion
-finline-functions-called-once -fipa-pure-const -fipa-profile -fipa-reference -fmerge-constants -fmove-loop-invariants
-fshrink-wrap -fsplit-wide-types -ftree-bit-ccp -ftree-ccp -fssa-phiopt -ftree-ch -f

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值