MacOS,C,VirtualBox和time.h的输出测量时间错误

时间:2017-05-23 12:03:29

标签: c time virtualbox macos-sierra time.h

我正在使用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

有没有人知道为什么会发生这种情况?

0 个答案:

没有答案