忽然发现GCC还有优化代码的功能,而且很给力。ide
GCC后面能够跟-O1 -O2 -O3这三个选项来优化代码,注意,这里是字母O,不是数字0,-O3的优化程度最高。函数
-O1 是默认值,回减少代码的尺寸和运行时间,但不会增长编译时间优化
-O2 跟-O1不一样的地方是-O2增长了优化:不须要额外的空间去加速交换spa
-Os 比-O2更进了一步,但忽略了有可能增长代码长度的部分,而且增长了减少代码长度的优化debug
-O3 跟-O2相比,增长了内联函数和重名register,不过可能致使编译出来的二级制程序不能debugblog
另外,GCC还有一些优化参数,-mcpu 会针对某一型号的CPU进行调优而不会致使它不能在另外的CPU上运行it
而-march会致使编译的时候,只采用一个型号的CPU上的指令,会致使不兼容io
redhat下的软件编译通常都会采用编译
-O2 -march=i386 -mcpu=i686class
平时不要优化,到最后发布的时候再优化,下面用一个图来讲明优化的效果。
先附上代码:
#include <stdio.h>
int main()
{
int counter;
int ending;
int temp;
int five;
for(counter=0;counter<2*100000000*9/18+5131;counter+=(5-3)/2)
{
temp=counter/15302;
ending=counter;
five=5;
}
printf("five =%d ;ending =%d \n",five,ending);
return 0;
}
从这张图上就能够看出,效果很给力!