循环优化

code A :

#include <stdio.h>

int main()
{
int i;
for(i = 0; i < 200000000; i++)
{
    printf("%d\n",i);
}
return 0;
}
编译 gcc -g main.c
执行 time ./a.out > /dev/null
结果
real 0m6.439s
user 0m6.367s
sys 0m0.050s


code B :

  1 #include <stdio.h>
  2 #include <string.h>
  3 
  4 void string_add(char *num, int len)
  5 {
  6     int p=len-1,f=0;
  7 
  8     num[p]++;
  9 
 10     for(;p>=0;p--)
 11     {
 12         if(f==1)
 13         {
 14             num[p]++;
 15         }
 16 
 17         if(num[p]>'9')
 18         {
 19             num[p]='0';
 20             f=1;
 21         }
 22         else
 23             break;
 24     }
 25 }
 26 
 27 int main()
 28 {
 29 
 30     int i=0;
 31     /*
 32     for(i=0;i<20000000;i++)
 33     {
 34         printf("%d\n",i);
 35     }
 36     */
 37 
 38     char buf[16];
 39     memset(buf,0,sizeof(buf));
 40     sprintf(buf, "%012d", i);
 41     for(i=0;i<20000000;i++)
 42     {
 43         printf("%s\n", buf);
 44         string_add(buf, 12);
 45     }
 46     return 0;
 47 }

编译 gcc -g main.c
执行 time ./a.out > /dev/null
结果
real 0m1.766s
user 0m1.741s
sys 0m0.018s

从结果上看,很明显code B的代码消耗的cpu时间超短

分析:
code A是一直循环(迭代)下去,这样很耗cpu时间,但是code B却不这样,他们是最多每过10个循环(迭代)就会重新执行一次

你可能感兴趣的:(算法优化,循环优化)