首頁 > 後端開發 > C++ > 如何在沒有外部函式庫的情況下在 Linux 中獲得毫秒級的時間精度?

如何在沒有外部函式庫的情況下在 Linux 中獲得毫秒級的時間精度?

Linda Hamilton
發布: 2024-11-19 07:05:02
原創
598 人瀏覽過

How Can I Get Millisecond Time Accuracy in Linux Without External Libraries?

在Linux 中獲取毫秒時間:clock() 的替代方法

在Linux 中尋求超出秒範圍的精度,我們遇到了限制的clock(),它只近似於最接近的秒數。雖然像 Qt 這樣的第三方函式庫提供了使用 QTime 類別的解決方案,但為了尋求更基礎的方法,我們探索了標準 C 工具的領域。

要實現毫秒精確度,請考慮使用 gettimeofday() 函數標頭。該函數傳回一個 timeval 結構,捕獲包含秒和微秒部分的當前時間。

考慮以下程式碼片段:

#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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板