正確な時間測定に QueryPerformanceCounter を使用する方法
QueryPerformanceCounter は、高精度のタイミング機能を提供する強力な Windows API 関数です。実装方法を理解することは、ゲームやパフォーマンス監視ツールなど、正確な時間測定を必要とするアプリケーションにとって非常に重要です。
QueryPerformanceCounter を使用するには、格納するために使用される 64 ビット整数である LARGE_INTEGER 変数を宣言する必要があります。時間の値。次のコード スニペットは、変数を初期化する方法を示しています。
LARGE_INTEGER li; double PCFreq;
StartCounter() 関数は、現在のティック カウントをクエリし、CounterStart 変数に格納することによって、パフォーマンス カウンターを初期化します。また、パフォーマンス カウンターの頻度も計算され、ティックを秒またはミリ秒に変換するために使用されます。
void StartCounter() { if (!QueryPerformanceFrequency(&li)) { cout << "QueryPerformanceFrequency failed!\n"; } PCFreq = double(li.QuadPart) / 1000.0; QueryPerformanceCounter(&li); CounterStart = li.QuadPart; }
カウンターが開始されてからの経過時間を取得するには、GetCounter() 関数を使用します。現在のティック カウントをクエリし、そこから初期ティック カウントを減算し、経過時間を double として返します。
double GetCounter() { QueryPerformanceCounter(&li); return double(li.QuadPart - CounterStart) / PCFreq; }
回答で提供されているコードは、これらの関数を使用して単純なタイマーを実装する方法を示しています。 1 秒間のスリープ後の経過時間を出力します。
PCFreq 値を調整することで、タイマーの精度を制御できます。 1000.0 に設定するとミリ秒の精度が得られ、1000000.0 に設定するとマイクロ秒の精度が得られます。
以上がQueryPerformanceCounter はどのようにして Windows アプリケーションで正確な時間測定を実現できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。