我已经生成了包含约200K行代码的C ++代码,并且我正在尝试使用gcc 4.8.5在CentOS 5.11下对其进行编译。当我指定-O1标志时,编译花费了1分33秒。我从-O1启用的this和this页面中找到了所有优化标志,它们是:
- -fcombine-stack-adjustments
- -fcompare-elim
- -fcprop-registers
- -fdefer-pop
- -fforward-propagate
- -fguess-branch-probability
- -fif-conversion
- -fif-conversion2
- -finline-functions-一次调用
- -fipa-profile
- -fipa-pure-const
- -fipa-reference
- -fmerge-constants
- -fshrink-wrap
- -fsplit-wide-types
- -ftree-bit-ccp
- -ftree-ccp
- -ftree-ch
- -ftree-copy-prop
- -ftree-copyrename
- -ftree-dce
- -ftree-dominator-opts
- -ftree-dse
- -ftree-fre
- -ftree-sink
- -ftree-slsr
- -ftree-sra
- -ftree-ter
但是当我用这些标志替换-O1时,编译时间减少到34秒。与-O2和-O3相同。
所以,这是一个问题:-O标志到底是什么?如果仅添加其他标志,则编译时间不应更改,但就我而言,会有很大的不同。