Linux 上C 語言的毫秒精確計時
最初詢問為什麼在Windows 上Clock() 以毫秒為單位返回時間,但在Linux上只返回秒,提問者尋求一種無需依賴Boost或等第三方庫即可獲得毫秒級時間精度的解決方案Qt.
使用gettimeofday() 的解決方案
解決方案在於利用標準C 函式庫中存在的gettimeofday() 函數。以下是如何實現它:
包含必要的標頭:
#include <sys/time.h> #include <stdio.h> #include <unistd.h>
定義一個struct timeval 來儲存秒和微秒:
struct timeval start, end;
開始吧time:
gettimeofday(&start, NULL);
使用 usleep()指定以微秒為單位的延遲(替換為您想要的延遲):
usleep(2000);
取得結束time:
gettimeofday(&end, NULL);
計算經過的時間:
long mtime, seconds, useconds; 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);
此程式碼片段利用gettimeofday() 取得微秒的時間,確保毫秒級精確度。它是在 Linux 上用 C 語言獲取精確時間測量的強大且標準的解決方案。
以上是如何在沒有外部函式庫的情況下在 Linux 上用 C 語言實作毫秒精確計時?的詳細內容。更多資訊請關注PHP中文網其他相關文章!