2

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 はミリ秒単位、delay は秒単位です。

私は archlinux 64 ビットを使用しています。なぜこれが起こっているのか理解できません。

4

1 に答える 1

2

clock(3)マニュアルページから:

clock() 関数は、プログラムが使用するプロセッサー時間の概算を返します。

したがって、clock関数は経過した時間ではなく、プログラムが実行した「ティック」の数を返します。ご存知のように、マルチタスク システムでは、プログラムをいつでも一時停止して、他のプログラムを実行させることができます。

于 2013-09-10T15:14:47.580 に答える