1. ホーム
  2. c

[解決済み] ANSI Cでミリ秒単位で時間を計るには?

2022-03-14 22:20:07

質問

ANSI Cだけで、ミリ秒以上の精度で時間を計測する方法はありますか?time.hを見ていたのですが、秒精度の関数しか見つかりませんでした。

どのように解決するのですか?

1秒以上の時間分解能を持つANSI C関数は存在しませんが、POSIX関数 gettimeofday はマイクロ秒の分解能を提供します。 クロック機能は、プロセスが実行された時間だけを測定するため、多くのシステムで正確ではありません。

この機能はこんな風に使えます。

struct timeval tval_before, tval_after, tval_result;

gettimeofday(&tval_before, NULL);

// Some code you want to time, for example:
sleep(1);

gettimeofday(&tval_after, NULL);

timersub(&tval_after, &tval_before, &tval_result);

printf("Time elapsed: %ld.%06ld\n", (long int)tval_result.tv_sec, (long int)tval_result.tv_usec);

これは Time elapsed: 1.000870 私のマシンでは