C :如何在沒有Clock() 限制的情況下在Linux 上取得毫秒
與Windows 中Clock() 返回毫秒不同,Linux 的實現四捨五入結果精確到1000,僅產生秒精度。對毫秒計時的需求引發了一個問題:有沒有不使用第三方函式庫的標準 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實現毫秒精度計時而不依賴clock()?的詳細內容。更多資訊請關注PHP中文網其他相關文章!