1.#include
2.#include 3.
4.int main(int argc, char * argv[]) 5.{
6. struct timeval start,end; 7. gettimeofday( &start, NULL ); /*测试起始时间*/ 8. double timeuse; 9. int j; 10. for(j=0;j<10000000;j++) 11. ;
12. gettimeofday( &end, NULL ); /*测试终止时间*/ 13. timeuse = 1000000 * ( end.tv_sec - start.tv_sec ) + end.tv_usec -start.tv_usec;
14. timeuse /= 1000000;
15.printf("运行时间为:%f\n",timeuse); 16.
17. return 0; 18.
19.}
与之前我们测试时间的代码一样,我们只是增大了for()循环的次数。
先来看看我们不使用优化的结果:
1.root@ubuntu:/home# gcc time.c -o p
2.root@ubuntu:/home# ./p
3.运行时间为:0.028260
使用了优化的运行结果:
1.root@ubuntu:/home# gcc -o p time.c -O2
2.root@ubuntu:/home# ./p
3.运行时间为:0.000001
从结果显然可以看出差距如此之大,但是如果我们在上面的代码中修改一下int j为int volatile j之后再来看看如下代码:
1.#include
2.#include 3.
4.int main(int argc, char * argv[]) 5.{
6. struct timeval start,end; 7. gettimeofday( &start, NULL ); /*测试起始时间*/ 8. double timeuse; 9. int volatile j; 10. for(j=0;j<10000000;j++) 11. ;
12. gettimeofday( &end, NULL ); /*测试终止时间*/ 13. timeuse = 1000000 * ( end.tv_sec - start.tv_sec ) + end.tv_usec -start.tv_usec;
14. timeuse /= 1000000;
15.printf("运行时间为:%f\n",timeuse); 16.
17. return 0; 18.
19.}