首頁 >後端開發 >C++ >如何在沒有外部函式庫的情況下在 Linux 上用 C 語言實作毫秒精確計時?

如何在沒有外部函式庫的情況下在 Linux 上用 C 語言實作毫秒精確計時?

DDD
DDD原創
2024-11-15 17:47:03850瀏覽

How to Achieve Milliseconds-Precise Timing in C   on Linux Without External Libraries?

Linux 上C 語言的毫秒精確計時

最初詢問為什麼在Windows 上Clock() 以毫秒為單位返回時間,但在Linux上只返回秒,提問者尋求一種無需依賴Boost或等第三方庫即可獲得毫秒級時間精度的解決方案Qt.

使用gettimeofday() 的解決方案

解決方案在於利用標準C 函式庫中存在的gettimeofday() 函數。以下是如何實現它:

  1. 包含必要的標頭:

    #include <sys/time.h>
    #include <stdio.h>
    #include <unistd.h>
  2. 定義一個struct timeval 來儲存秒和微秒:

    struct timeval start, end;
  3. 開始吧time:

    gettimeofday(&start, NULL);
  4. 使用 usleep()指定以微秒為單位的延遲(替換為您想要的延遲):

    usleep(2000);
  5. 取得結束time:

    gettimeofday(&end, NULL);
  6. 計算經過的時間:

    long mtime, seconds, useconds;    
    
    seconds  = end.tv_sec  - start.tv_sec;
    useconds = end.tv_usec - start.tv_usec;
    
    mtime = ((seconds) * 1000 + useconds/1000.0) + 0.5;
  7. 以毫秒為單位列印經過的時間:

    printf("Elapsed time: %ld milliseconds\n", mtime);

此程式碼片段利用gettimeofday() 取得微秒的時間,確保毫秒級精確度。它是在 Linux 上用 C 語言獲取精確時間測量的強大且標準的解決方案。

以上是如何在沒有外部函式庫的情況下在 Linux 上用 C 語言實作毫秒精確計時?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn