ホームページ > バックエンド開発 > C++ > QueryPerformanceCounter はどのようにして Windows アプリケーションで正確な時間測定を実現できるのでしょうか?

QueryPerformanceCounter はどのようにして Windows アプリケーションで正確な時間測定を実現できるのでしょうか?

Susan Sarandon
リリース: 2024-12-17 15:59:11
オリジナル
845 人が閲覧しました

How Can QueryPerformanceCounter Achieve Precise Time Measurement in Windows Applications?

正確な時間測定に 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート