在Linux 中取得毫秒精度時間測量
在C 中使用時間測量時,clock() 函數提供了一個方便的方法來檢索Windows 系統上的目前時間(以毫秒為單位)。然而,在 Linux 上,clock() 可能會提供不太精確的結果,將時間四捨五入到最接近的秒數。
在這種情況下,解決方案是利用標準 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中文網其他相關文章!