突然发现GCC还有优化代码的功能,并且很给力。

GCC后面可以跟-O1 -O2 -O3这三个选项来优化代码,注意,这里是字母O,不是数字0-O3的优化程度最高。

 

-O1 是默认值,回减小代码的尺寸和运行时间,但不会增加编译时间

-O2 跟-O1不同的地方是-O2增加了优化:不需要额外的空间去加速交换

-Os  比-O2更进了一步,但忽略了有可能增加代码长度的部分,并且增加了减小代码长度的优化

-O3 跟-O2相比,增加了内联函数和重名register,不过可能导致编译出来的二级制程序不能debug

另外,GCC还有一些优化参数,-mcpu 会针对某一型号的CPU进行调优而不会导致它不能在另外的CPU上运行

而-march会导致编译的时候,只采用一个型号的CPU上的指令,会导致不兼容

redhat下的软件编译一般都会采用

-O2  -march=i386 -mcpu=i686

 

平时不要优化,到最后发布的时候再优化,下面用一个图来说明优化的效果。

先附上代码:

 

#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;

}

 

从这张图上就可以看出,效果很给力!