利用GCC優化代碼

 忽然發現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;

}

 

從這張圖上就能夠看出,效果很給力!