首頁 >後端開發 >C++ >如何精確測量 C 程式碼執行時間?

如何精確測量 C 程式碼執行時間?

Linda Hamilton
Linda Hamilton原創
2024-11-28 13:58:12935瀏覽

How Can I Precisely Measure Code Execution Time in C  ?

在 C 中精確測量執行時間

準確的執行時間測量對於最佳化程式碼效能至關重要。在 C 中,clock() 函數提供了一種計算經過時間的方法。但是,它可能會透過簡短的程式碼片段傳回不可靠的結果。

clock() 的限制

對於小輸入或單行語句,clock() 經常報告執行情況「0秒」的次數。造成這種差異的原因是,clock() 函數的粒度為毫秒或奈秒,取決於系統。對於短於此粒度的執行持續時間,clock() 向下舍入為零。

解決方案:使用 GetTimeMs64()

要克服此限制,請考慮使用實用函數GetTimeMs64()。此函數精確測量自 Unix 紀元以來經過的時間(以毫秒為單位),並且適用於 Windows 和 Linux 平台。

GetTimeMs64() 函數使用 Windows 上的系統時脈 GetSystemTimeAsFileTime()。在 Linux 上,它使用 gettimeofday() 來檢索當前時間。它將獲得的值轉換為毫秒,並減去 Unix 紀元的偏移量以與 Unix 時間標準保持一致。

實作

要使用GetTimeMs64(),只需包含在您的程式中加入以下程式碼:

#include <Windows.h>
// or
#include <sys/time.h>
#include <ctime>

uint64 GetTimeMs64()
{
    // Code from provided solution goes here
}

計算a 的執行時間碼片段:

  1. 執行程式碼前呼叫GetTimeMs64()。
  2. 執行程式碼。
  3. 執行程式碼後再次呼叫 GetTimeMs64()。
  4. 第二次減去第一次即可得到經過的時間毫秒。

用法範例:

uint64 startTime = GetTimeMs64();
// Your code here
uint64 endTime = GetTimeMs64();
cout << "Execution time: " << (endTime - startTime) / 1000.0 << " seconds" << endl;

即使對於小程式碼片段或片語句,此方法也可以提供精確的執行時間測量。它允許開發人員有效地優化他們的程式碼並精確地衡量效能改進。

以上是如何精確測量 C 程式碼執行時間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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