gcc通过-On来控制优化代码的生成,其中n代表优化级别的整数,n一般在0-2或3
-O的意思就是-O1。一般包括线程跳转和延迟退栈两种优化
-O2还会处理处理器指定调度
-O3还会处理循环展开和其他一些与处理器特性相关的优化工作
一般使用O2,它作为一个平衡点(优化长度、编译时间、代码大小之间)
inefficient codes
#include<stdio.h>
int main()
{
unsigned long int counter;
unsigned long int result;
unsigned long int temp;
unsigned int five;
int i;
for(counter = 0; counter < 2009 * 2009 * 100 / 4; counter += (10 - 6) / 4)
{
temp = counter / 1979;
for(i = 0; i < 20; i++)
five = 200 * 200 / 8000;
result = counter;
}
printf("Result is %d \n", result);
return 0;
}
第一步
生成可执行文件 gcc inefficient.c -o inefficient
第二步
测算程序的运行时间
time ./inefficient
第三步
代码优化
gcc -O inefficient.c -o inefficient
第四步
再测算程序运行时间
time ./inefficient
第五步
继续代码优化
gcc -O2 inefficient.c -o inefficient
第六步
再测算程序运行时间
time ./inefficient
第七步、八步可以继续优化O3并测算
优化的代码
#include<stdio.h>
int main()
{
long int counter = 100904034;
long int result = 0;
result = counter;
printf("Result is %lf\n", result);
return 0;
}
这段代码的执行效率比之前的代码要好很多。所以在程序执行中不要过度依赖优化,要自己写出更节省时间的代码