Linux でミリ秒精度の時間測定値を取得する
C で時間測定値を操作する場合、クロック() 関数は、取得するための便利なメソッドを提供します。 Windows システム上のミリ秒単位の現在時刻。ただし、Linux では、クロック() は時間を最も近い秒に四捨五入して、精度の低い結果を提供することがあります。
この場合、解決策は標準の sys/time.h ヘッダーと関数を利用することです。 gettimeofday() 関数は、現在の時刻を timeval 構造体として返します。これには、エポックからの秒とマイクロ秒の両方が含まれます。終了時刻から開始時刻を減算し、マイクロ秒をミリ秒に変換すると、ミリ秒精度の時間測定値を取得できます。
ここに、gettimeofday() を使用してミリ秒精度の時間測定を実現する方法を示すコード スニペットの例を示します。
#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); // Sleep for 2 milliseconds 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 でミリ秒精度の時間測定を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。