这是使用register的代码
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
double duration;
clock_t start,end;
register double sum=0.0;
register int j,k;
start = clock();
for(j=0;j<100000000;j++)
{
for(k=0;k<10;k++)
sum=sum+1.0;
}
end = clock();
duration = (double)(end - start) / CLOCKS_PER_SEC;
printf( "%f seconds\n", duration );
getchar();
}
运行结果为10.137000秒
不用register的代码
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
double duration;
clock_t start,end;
double sum=0.0;
int j,k;
start = clock();
for(j=0;j<100000000;j++)
{
for(k=0;k<10;k++)
sum=sum+1.0;
}
end = clock();
duration = (double)(end - start) / CLOCKS_PER_SEC;
printf( "%f seconds\n", duration );
getchar();
}
运行时间为11.434000秒,当然这个J选的值有点小,当j有9个0时结果就更明显了。
1X10^9时不用register用时108.752000
1X10^9时用register用时112.881000
为什么会是这样呢?用了寄存器时间反而加长了。
版权声明:本文为y491887095原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。