#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个循环(迭代)就会重新执行一次