GCC优化概述
GCC有很多优化选项,一般包括O1,O2, O3,Os,Og等。
一般很容易通过在线手册找到对应gcc版本的上述优化选项的细节。除了开启一些选项之外,GCC的优化也设置一些parmas。
例如gcc-4.6.1的优化选项细节可以从下面的网站获得:
http://gcc.gnu.org/onlinedocs/gcc-4.6.1/gcc/Optimize-Options.html#Optimize-Options
获得本机安装的gcc的优化细节
由于编译的具体细节除了因不同版本有区别外,还与gcc release的时候的编译参数,目标平台(例如AIX,Linux, Solaris等)版本等有关。那么有什么办法获得本机当前
安装的gcc的优化细节呢?可以通过以下命令:
gcc -Q --help=optimizers
查看开启和关闭了哪些选项。通过以下命令:
gcc -Q --help=params
可以查看有哪些params,遗憾的是我仍然不知道每个O优化到底如何设置了这些params。
哪位童鞋知道的话别忘告诉我一声!例如,下面的命令序列可以帮助我们获得O3比O2多开启了哪些选项。
gcc -c -Q -O3 --help=optimizers > /tmp/O3-opts gcc -c -Q -O2 --help=optimizers > /tmp/O2-opts diff /tmp/O2-opts /tmp/O3-opts | grep enabled
有时候,我们希望对 某个函数 或者 某块代码 添加自己的优化选项这个可以通过下面的宏实现:
对代码块的优化/禁止优化:
#pragma GCC push_options #pragma GCC optimize ("O0") your code #pragma GCC pop_options
对函数的优化/禁止优化
__attribute__((optimize("O0")))
参考文章:
http://leander.blog.51cto.com/2911819/1158605