忽然發現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;
}
從這張圖上就能夠看出,效果很給力!