2

我正在使用 timeval 和 clock() 函数来查看我的 c 程序中两个操作之间的时间差。不知何故 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 位。我不明白为什么会这样。

4

1 回答 1

2

clock(3)手册页:

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

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

于 2013-09-10T15:14:47.580 回答