在 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 的執行時間碼片段:
用法範例:
uint64 startTime = GetTimeMs64(); // Your code here uint64 endTime = GetTimeMs64(); cout << "Execution time: " << (endTime - startTime) / 1000.0 << " seconds" << endl;
即使對於小程式碼片段或片語句,此方法也可以提供精確的執行時間測量。它允許開發人員有效地優化他們的程式碼並精確地衡量效能改進。
以上是如何精確測量 C 程式碼執行時間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!