溫馨提示×

c++中queryperformancecounter怎么用

c++
小億
245
2024-01-05 13:21:36
欄目: 編程語言

在C++中使用QueryPerformanceCounter函數(shù)來測量時間和性能,需要進行以下步驟:

  1. 包含Windows.h頭文件,該頭文件包含QueryPerformanceCounter函數(shù)的聲明。
#include <Windows.h>
  1. 聲明一個LARGE_INTEGER類型的變量來存儲計數(shù)器的值。
LARGE_INTEGER start, end, frequency;
  1. 調(diào)用QueryPerformanceFrequency函數(shù)來獲取計數(shù)器的頻率,該頻率表示每秒計數(shù)器增加的次數(shù)。
QueryPerformanceFrequency(&frequency);
  1. 調(diào)用QueryPerformanceCounter函數(shù)來獲取計數(shù)器的當前值。
QueryPerformanceCounter(&start);
  1. 執(zhí)行需要計時的代碼。

  2. 調(diào)用QueryPerformanceCounter函數(shù)來獲取計數(shù)器的當前值。

QueryPerformanceCounter(&end);
  1. 計算時間間隔,并轉(zhuǎn)換為秒數(shù)。
double elapsed = (end.QuadPart - start.QuadPart) / static_cast<double>(frequency.QuadPart);

完整示例代碼如下:

#include <iostream>
#include <Windows.h>

int main() {
    LARGE_INTEGER start, end, frequency;
    QueryPerformanceFrequency(&frequency);
    QueryPerformanceCounter(&start);

    // 執(zhí)行需要計時的代碼
    for (int i = 0; i < 1000000; ++i) {
        // Do something
    }

    QueryPerformanceCounter(&end);
    double elapsed = (end.QuadPart - start.QuadPart) / static_cast<double>(frequency.QuadPart);

    std::cout << "Elapsed time: " << elapsed << " seconds" << std::endl;

    return 0;
}

注意:

  • QueryPerformanceCounter函數(shù)返回的計數(shù)器值是一個64位整數(shù),可以使用LARGE_INTEGER類型來存儲。
  • 如果計時結(jié)果非常小,可以乘以一個合適的倍數(shù)來轉(zhuǎn)換為更友好的單位,如毫秒或微秒。

0