首頁 > 後端開發 > C++ > 如何在Linux中實現毫秒精度的時間測量?

如何在Linux中實現毫秒精度的時間測量?

DDD
發布: 2024-11-13 10:58:02
原創
910 人瀏覽過

How to Achieve Millisecond Precision Time Measurement in Linux?

在Linux 中取得毫秒精度時間測量

在C 中使用時間測量時,clock() 函數提供了一個方便的方法來檢索Windows 系統上的目前時間(以毫秒為單位)。然而,在 Linux 上,clock() 可能會提供不太精確的結果,將時間四捨五入到最接近的秒數。

在這種情況下,解決方案是利用標準 sys/time.h 標頭和函數。 gettimeofday() 函數將當前時間作為 timeval 結構傳回,其中包含自紀元以來的秒數和微秒數。透過結束時間減去開始時間,並將微秒轉換為毫秒,我們可以得到毫秒精度的時間測量。

下面是一個範例程式碼片段,示範如何使用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); // Sleep for 2 milliseconds
    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中實現毫秒精度的時間測量?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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