ホームページ > バックエンド開発 > C++ > QueryPerformanceCounter はタイマーの精度をどのように向上させることができ、またその使用方法は何ですか?

QueryPerformanceCounter はタイマーの精度をどのように向上させることができ、またその使用方法は何ですか?

Barbara Streisand
リリース: 2024-12-15 04:24:09
オリジナル
982 人が閲覧しました

How Can QueryPerformanceCounter Improve Timer Accuracy and How Is It Used?

QueryPerformanceCounter とは何か、その使用方法

Timer クラスのタイミング精度を向上させるには、QueryPerformanceCounter が特に信頼できるオプションになります。マイクロ秒を求める場合

QueryPerformanceCounter の実装

QueryPerformanceCounter を利用するには、次の手順に従います。

  1. 初期化PCFreq:

    • QueryPerformanceFrequency(&li) を使用してパフォーマンス カウンターの周波数を決定します。
    • 結果を 2 倍に変換し、1000 で除算して周波数を取得します。マイクロ秒。
LARGE_INTEGER li;
if (!QueryPerformanceFrequency(&li))
    cout << "QueryPerformanceFrequency failed!\n";

PCFreq = double(li.QuadPart) / 1000.0;
ログイン後にコピー
  1. カウンターを開始します:

    • 次を使用して初期カウントを記録しますQueryPerformanceCounter(&li).
    • このカウントを CounterStart 変数に保存します。
QueryPerformanceCounter(&li);
CounterStart = li.QuadPart;
ログイン後にコピー
  1. Get Time Elapsed:

    • QueryPerformanceCounter(&li) を呼び出して現在のカウントを取得します。
    • 現在のカウントから開始カウントを減算し、結果を次の値で割ることにより経過時間を計算します。 PCFreq.
double GetCounter()
{
    QueryPerformanceCounter(&li);
    return double(li.QuadPart - CounterStart) / PCFreq;
}
ログイン後にコピー
  1. 使用例:
StartCounter();
Sleep(1000);
cout << GetCounter() << "\n"; // Output: approximately 1000
ログイン後にコピー

PCFreq の除算を調整する時間の単位を制御できる返された値:

  • ミリ秒: /1000.0
  • 秒: /1.0
  • マイクロ秒: /1000000.0

以上がQueryPerformanceCounter はタイマーの精度をどのように向上させることができ、またその使用方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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