C++でQueryPerformanceCounterを使い方。
C++で時間とパフォーマンスを計測するには、QueryPerformanceCounter関数を使用して以下のステップを行う必要があります。
- Windows.hヘッダーファイルをインクルードすると、QueryPerformanceCounter関数の宣言が含まれます。
#include <Windows.h>
- 計数器の値を格納するために、LARGE_INTEGER型の変数を宣言します。
LARGE_INTEGER start, end, frequency;
- QueryPerformanceFrequency関数を呼び出して、カウンターの周波数を取得し、1秒あたりのカウンター増加回数を示します。
QueryPerformanceFrequency(&frequency);
- QueryPerformanceCounter関数を呼び出して、カウンターの現在の値を取得します。
QueryPerformanceCounter(&start);
- コードを実行するときには、タイミングを計る必要があります。
- QueryPerformanceCounter関数を呼び出して、カウンターの現在の値を取得します。
QueryPerformanceCounter(&end);
- 時間間隔を計算して、秒数に変換してください。
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);
// 执行需要计时的代码
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関数が返すカウンター値は64ビット整数であり、LARGE_INTEGER型を使用して保存することができます。
- 計測結果が非常に小さい場合、ミリ秒やマイクロ秒など、より使いやすい単位に変換するために適切な倍数を掛けることができます。