首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

Windows 平台 C/C++ 程式執行時間測量:毫秒級與微秒級方案

     編輯:關於C++

方案一:clock() — 毫秒級精度

標準 C 庫函數,回傳處理器時鐘數,適用於一般效能分析。

#include 
#include 

int main() {
    clock_t start = clock();
    { /* 待測試程式碼區段 */ }
    clock_t end = clock();
    printf("執行時間: %f 秒\n", (double)(end - start) / CLOCKS_PER_SEC);
    return 0;
}

注意:精度受限於 CLOCKS_PER_SEC(通常為 1000),約毫秒級。

方案二:QueryPerformanceCounter — 微秒級高精度

Windows API,利用硬體高解析度計數器,適合精密計時。

#include 
#include 

int main() {
    LARGE_INTEGER nFreq, t1, t2;
    double dt;

    QueryPerformanceFrequency(&nFreq);      // 取得頻率
    QueryPerformanceCounter(&t1);           // 起始計數
    { /* 待測試程式碼區段 */ }
    QueryPerformanceCounter(&t2);           // 結束計數

    dt = (double)(t2.QuadPart - t1.QuadPart) / nFreq.QuadPart;
    std::cout << "執行時間: " << dt * 1000 << " ms" << std::endl;
    return 0;
}

兩者比較

特性clock()QueryPerformanceCounter
精度毫秒級 (~1ms)微秒級 (~0.001ms)
可移植性跨平台 (標準 C)僅 Windows
測量對象CPU 時間牆鐘時間
適用場景粗略效能分析精密基準測試、遊戲迴圈計時

進階建議

  • 跨平台高精度計時可使用 C++11 std::chrono::high_resolution_clock
  • 微觀基準測試建議多次執行取平均,並關閉優化干擾
  • 多執行緒環境下,QueryPerformanceCounter 測量的是實際經過時間,非 CPU 累積時間
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved