1

申し訳ありませんが、私はCに慣れていません。しかし、何が間違っていますか? ほとんどすべてを試しましたが、t1 と t2 の間でコードを実行するために渡された秒数を計算できず、常に 0.00 秒で Finished が返されます。お待ち頂きまして、ありがとうございます :)

#include <time.h>

clock_t t1, t2;

t1 = clock();
sleep(5);
t2 = clock();
printf("\nFinished in %.2f seconds.\n\n", (t2-t1)*1.0/CLOCKS_PER_SEC);
4

3 に答える 3

0

clock()経過時間の計測には不向きです。通常、解像度は非常に低く、壁時間ではなく、CPU 時間のみを測定します。Unix をターゲットにしている場合は、 を使用する必要がありますclock_gettime(CLOCK_MONOTONIC, ...)。WindowsQueryPerformanceCounter()で使用する API です。

gettimeofday()うるう秒の影響や、ネットワーク タイム プロトコルによる調整の影響を受けるため、 も不適切であることに注意してください。

于 2013-09-11T17:09:20.757 に答える
0

clock_t「壁時間」ではなく、CPU時間を入力として考慮していないようです。CPU が 5 秒間スリープ状態になると、コードが効率的に実行されません。

于 2013-09-11T15:49:44.153 に答える