GCC中-O 优化究竟做了啥?

在网上查了好多资料感觉讲的都不太清楚,现在也只能理解部分,做了总结,如果有错请指出



-O0  不做优化,默认选项

-O1  这是最基本的优化等级,形成更小更快的代码但不会花费太多的编译时间

-O2  做-O1的所有优化,几乎所有优化都做,编译器并不进行循环打开以及函数内联,提高代码性能但不增大体积和不增加过多编译时间

-O3  在O2的基础上优化,增加-finline-functions,-funswitch-loops,-fgcse-after-reload优化

-finline-functions

  允许编译器选择某些简单的函数在其被调用处展开,比较安全的选项,特别是在CPU二级缓存较大时建议使用。

  -funswitch-loops

  将循环体中不改变值的变量移动到循环体之外。

  -fgcse-after-reload

  为了清除多余的溢出,在重载之后执行一个额外的载入消除步骤。

资料:http://blog.chinaunix.net/uid-20662363-id-3036581.html

http://blog.chinaunix.net/uid-23916171-id-2653114.html

http://blog.csdn.net/qq_34882983/article/details/51853817


一个在努力中的未来程序员,如果有更好的算法,欢迎评论。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值