首頁 >後端開發 >C++ >如何準確測量 C 函數的執行時間?

如何準確測量 C 函數的執行時間?

Patricia Arquette
Patricia Arquette原創
2024-12-20 12:25:10154瀏覽

How Can I Accurately Measure Function Execution Time in C  ?

在C 中準確測量函數執行時間

背景

確定C 中特定函數的執行時間可以是對於效能分析和優化至關重要。 Native Linux 提供了有限的準確測量時間的選項,Boost.Chrono 中的 process_user_cpu_clock 函數僅針對使用者 CPU 時間,而不涵蓋整個函數執行時間。

更精確的解決方案

幸運的是,C 11 透過來自標頭。這個高解析度時鐘可以準確、全面地測量函數執行時間。

程式碼片段示範如何使用 high_resolution_clock 來測量long_operation 函數的持續時間。 t1 和 t2 變數記錄執行函數之前和之後的時間戳,並將差異轉換為毫秒以進行顯示。

透過採用此技術,您可以獲得精確且一致的函數執行時間測量,無論在什麼情況下CPU負載變化,確保可靠的效能評估。
#include <chrono>

/* Only for this example. */
#include <iostream>
#include <thread>

void long_operation() {
    /* Simulating a long, intensive operation. */
    using namespace std::chrono_literals;
    std::this_thread::sleep_for(150ms);
}

int main() {
    using std::chrono::high_resolution_clock;
    using std::chrono::duration_cast;
    using std::chrono::duration;
    using std::chrono::milliseconds;

    auto t1 = high_resolution_clock::now();
    long_operation();
    auto t2 = high_resolution_clock::now();

    /* Milliseconds as an integer. */
    auto ms_int = duration_cast<milliseconds>(t2 - t1);

    /* Milliseconds as a double. */
    duration<double, std::milli> ms_double = t2 - t1;

    std::cout << ms_int.count() << "ms\n";
    std::cout << ms_double.count() << "ms\n";
    return 0;
}

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

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