C : Clock() の制限なしで Linux でミリ秒を取得する方法
Clock() がミリ秒を返す Windows とは異なり、Linux の実装ではミリ秒を四捨五入します。結果は 1000 に最も近い値になり、第 2 レベルの精度のみになります。ミリ秒レベルのタイミングが必要なため、次のような疑問が生じます: サードパーティのライブラリを使用しない標準 C ソリューションはありますか?
答え: gettimeofday()
標準の POSIX 関数 gettimeofday() にあります。この関数は、timeval 構造体に現在時刻を設定することにより、高精度のタイミング情報を提供します。 gettimeofday() を使用する C の例を次に示します。
#include <sys/time.h> #include <stdio.h> #include <unistd.h> int main() { struct timeval start, end; long mtime, seconds, useconds; gettimeofday(&start, NULL); usleep(2000); gettimeofday(&end, NULL); seconds = end.tv_sec - start.tv_sec; useconds = end.tv_usec - start.tv_usec; mtime = ((seconds) * 1000 + useconds/1000.0) + 0.5; printf("Elapsed time: %ld milliseconds\n", mtime); return 0; }
このコードは、gettimeofday() から取得した秒コンポーネントとマイクロ秒コンポーネントを組み合わせて、経過時間をミリ秒単位で計算する方法を示します。 0.5 の加算は、結果を最も近い整数に丸めるために適用されることに注意してください。
以上がLinux 上の C で、クロック() に依存せずにミリ秒精度のタイミングを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。