为什么多次用clock()测同一段程序的时间不一样?
#include <time.h> #include <stdio.h>
int main(void)
{ clock_t t_start; /* start time when test starts */
clock_t t_end; /* end time when test ends */
t_start = clock(); /* get start time */ /* test code */
要执行的程序A
t_end = clock(); /* get end time */ /* display result */
printf("time: %.9f s\n", (double)(t_end-t_start)/CLOCKS_PER_SEC);
return 0;
}
我把clock()加到程序当中测试程序中一段的运行时间,所有的初始数据都不变,输入的值也都相同,可为什么最后得到的时间总是不一样?如果有小的差别可以接受,但问题是差别相差比较大,比如,对于程序A,我第一次测可能是30毫秒,第二次就会是17毫秒,第三次就是10毫秒,第四次就是9.1..毫秒,8.3..毫秒等等等,时间不断减少,但是相差越来越小.太奇怪了,但也不是所有的程序都有这个问题,我有想会不会计算机内部有什么记忆的东西,使得相同输入对应的有些运算\附值给简化了.请教一下大家有没有什么想法?有没有遇到过类似的问题?谢谢