首頁 > 後端開發 > C++ > 如何在Linux上用C實現毫秒精度計時而不依賴clock()?

如何在Linux上用C實現毫秒精度計時而不依賴clock()?

Barbara Streisand
發布: 2024-11-13 12:15:02
原創
368 人瀏覽過

 How to Achieve Millisecond Precision Timing in C   on Linux Without Relying on clock()?

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

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