正確な時間測定のための QueryPerformanceCounter の実装
QueryPerformanceCounter は、マイクロ秒単位で時間間隔を測定するために Microsoft Windows によって提供される高精度の関数です。 C で効果的に実装するために、その使用法を段階的に分析してみましょう。
最初に、必要なヘッダー ファイルをインクルードする必要があります。
#include <windows.h>
次に、パフォーマンス カウンターの頻度と開始点:
double PCFreq = 0.0; __int64 CounterStart = 0;
StartCounter() 関数はパフォーマンスを初期化します。 counter:
void StartCounter() { LARGE_INTEGER li; if(!QueryPerformanceFrequency(&li)) cout << "QueryPerformanceFrequency failed!\n"; PCFreq = double(li.QuadPart)/1000.0; QueryPerformanceCounter(&li); CounterStart = li.QuadPart; }
QueryPerformanceFrequency はカウンターの周波数を取得し、QueryPerformanceCounter は現在の値を記録します。
StartCounter が呼び出されてからの経過時間を測定するには、GetCounter() 関数を使用します:
double GetCounter() { LARGE_INTEGER li; QueryPerformanceCounter(&li); return double(li.QuadPart-CounterStart)/PCFreq; }
この関数は、現在のカウンタ値を開始値に戻し、カウンタの周波数を調整します。
使用例:
StartCounter(); Sleep(1000); cout << GetCounter() <<"\n";
このプログラムは 1000 に近い数値を出力し、カウンタの測定精度を示します。マイクロ秒単位の継続時間。
PCFreq を変更することでカウンターの精度をカスタマイズできます。計算:
選択は、希望する粒度レベルによって異なります。
以上がQueryPerformanceCounter はどのようにして C で正確な時間測定を実現できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。