突然发现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;
}
从这张图上就可以看出,效果很给力!
转载于:https://blog.51cto.com/xiaosu/530439