在timeval和clock()之间选择以C计算经过的时间

时间:2013-09-10 15:09:42

标签: c linux clock timeval

我正在使用timeval和clock()函数来查看我的c程序中2个动作之间的时差。不知何故,timeval似乎给了我适当的经过时间(以毫秒为单位),其中clock()的值非常小。

    g_time = clock();
    gettimeofday(&decode_t,NULL);

过了一段时间

    delay =((float)(clock()-g_time)/(float)CLOCKS_PER_SEC);
    gettimeofday(&poll_t,NULL);
    delay1 = ((poll_t.tv_sec - decode_t.tv_sec)*1000 + (poll_t.tv_usec -  decode_t.tv_usec)/1000.0)    ;
    printf("\ndelay1: %f delay: %f ",delay1,delay);

通常的输出是:

延迟1:1577.603027延迟:0.800000

delay1以毫秒为单位,延迟以秒为单位。

我使用archlinux 64位。我无法理解为什么会这样。

1 个答案:

答案 0 :(得分:2)

clock(3)手册页:

  

clock()函数返回程序使用的处理器时间的近似值。

因此clock函数不返回已经过的时间量,而是返回程序运行的一些“滴答”。如您所知,在多任务系统中,您的程序可以随时暂停以让其他程序运行。