在网上查了好多资料感觉讲的都不太清楚,现在也只能理解部分,做了总结,如果有错请指出
-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
一个在努力中的未来程序员,如果有更好的算法,欢迎评论。