我正在使用VirtualBox进行性能测试,但是当我尝试使用 clock()进行测量时,会发生一些非常奇怪的事情。不知何故,通过此方法的输出小于 time()的输出结果(显然是正确的)。在没有任何VM运行的情况下获得以下结果。
#include <stdio.h>
#include <time.h>
int main()
{
clock_t start, end;
double cpu_time_used;
long int i = 0;
time_t start_t = time(NULL);
printf("%d\n", start_t);
start = clock();
while (i<1000000000){
if(i%100==0)
printf("%d\n", i);
i++;
}
end = clock();
printf("Time spent: %g seconds (time)\n", (double)(time(NULL)-start_t));
cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
printf("Time spent: %g seconds (clock)\n", cpu_time_used);
return 0;
}
输出:
Time spent: 41 seconds (time)
Time spent: 26.9069 seconds (clock)
系统:
Macbook Pro 13 mid-2012
OS: MacOS Sierra (10.12.4)
Processor: 2,5GHz Intel Core i5 (4 cores)
Memory: 4GB (1600MHz DDR3)
HD: SSD 240GB
有没有人知道为什么会发生这种情况?