clock()vs clock_gettime()分辨率差异

时间:2015-05-27 19:23:16

标签: c linux time clock

更新:操作员错误.. :(第二个循环是第一个循环的1/10。错字。修正后的数字更接近。

在下面的代码片段中,我将使用clock()和clock_gettime()来测量循环所需的时间。它是64位Ubunutu。 CLOCK_PER_SEC值为1000000.

int main() {
struct timespec ts, te;
clock_t s, e;
int i, temp = 0;;
s = clock();
for (i = 0; i < 10000; i++) {
    temp += i;
}
e = clock();
printf("%.6f\n", 1.0 * (e-s)/CLOCKS_PER_SEC);

clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &ts);
for (i = 0; i < 1000; i++) {
    temp += i;
}
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &te);

printf("%lu %lu\n", (long)(te.tv_sec - ts.tv_sec),
                    (long)(te.tv_nsec - ts.tv_nsec));

}

一个样本输出..(在多次运行中我看到它们在相同的范围内)

0.000068
0 4449

在使用clock_gettime()的测量中,循环耗时约为4000纳秒(约4微秒)。但是使用clock()的测量值为68微秒。

为什么clock()关闭幅度如此之大?

0 个答案:

没有答案