我正在使用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位。我无法理解为什么会这样。
答案 0 :(得分:2)
从clock(3)
手册页:
clock()函数返回程序使用的处理器时间的近似值。
因此clock
函数不返回已经过的时间量,而是返回程序运行的一些“滴答”。如您所知,在多任务系统中,您的程序可以随时暂停以让其他程序运行。