在Linux 中獲取毫秒時間:clock() 的替代方法
在Linux 中尋求超出秒範圍的精度,我們遇到了限制的clock(),它只近似於最接近的秒數。雖然像 Qt 這樣的第三方函式庫提供了使用 QTime 類別的解決方案,但為了尋求更基礎的方法,我們探索了標準 C 工具的領域。
要實現毫秒精確度,請考慮使用 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); 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() 來擷取使用 usleep() 延遲 2 毫秒之前和之後的當前時間。透過從最終時間減去初始時間,我們獲得以秒和微秒為單位的經過時間。為了將其轉換為毫秒,我們將秒乘以 1000,將微秒乘以 1000.0,然後將它們相加,透過 0.5 的調整確保小數精度。
此方法為在 C 中獲取毫秒提供了精確且標準的解決方案Linux,消除對外部庫的依賴,同時保持跨平台的兼容性。
以上是如何在沒有外部函式庫的情況下在 Linux 中獲得毫秒級的時間精度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!