Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah QueryPerformanceCounter Boleh Mencapai Pengukuran Masa Tepat dalam Aplikasi Windows?

Bagaimanakah QueryPerformanceCounter Boleh Mencapai Pengukuran Masa Tepat dalam Aplikasi Windows?

Susan Sarandon
Susan Sarandonasal
2024-12-17 15:59:11895semak imbas

How Can QueryPerformanceCounter Achieve Precise Time Measurement in Windows Applications?

Cara Menggunakan QueryPerformanceCounter untuk Pengukuran Masa Tepat

QueryPerformanceCounter ialah fungsi Windows API berkuasa yang menyediakan keupayaan pemasaan ketepatan tinggi. Memahami cara melaksanakannya adalah penting untuk aplikasi yang memerlukan pengukuran masa yang tepat, seperti permainan dan alat pemantauan prestasi.

Untuk menggunakan QueryPerformanceCounter, anda perlu mengisytiharkan pembolehubah LARGE_INTEGER, iaitu integer 64-bit yang digunakan untuk menyimpan nilai masa. Coretan kod berikut menunjukkan cara untuk memulakan pembolehubah:

LARGE_INTEGER li;
double PCFreq;

Fungsi StartCounter() memulakan pembilang prestasi dengan menanyakan kiraan semak semasa dan menyimpannya dalam pembolehubah CounterStart. Ia juga mengira kekerapan pembilang prestasi, yang digunakan untuk menukar detik kepada saat atau milisaat.

void StartCounter() {
    if (!QueryPerformanceFrequency(&li)) {
        cout << "QueryPerformanceFrequency failed!\n";
    }
    PCFreq = double(li.QuadPart) / 1000.0;
    QueryPerformanceCounter(&li);
    CounterStart = li.QuadPart;
}

Untuk mendapatkan semula masa yang berlalu sejak pembilang dimulakan, gunakan fungsi GetCounter(). Ia menanyakan kiraan tanda semasa dan menolak kiraan tanda awal daripadanya, mengembalikan masa berlalu sebagai dua kali ganda.

double GetCounter() {
    QueryPerformanceCounter(&li);
    return double(li.QuadPart - CounterStart) / PCFreq;
}

Kod yang disediakan dalam jawapan menunjukkan cara menggunakan fungsi ini untuk melaksanakan pemasa mudah yang mengeluarkan masa yang berlalu selepas tidur selama satu saat.

Dengan melaraskan nilai PCFreq, anda boleh mengawal ketepatan pemasa. Menetapkannya kepada 1000.0 memberikan anda ketepatan milisaat, manakala 1000000.0 memberikan ketepatan mikrosaat.

Atas ialah kandungan terperinci Bagaimanakah QueryPerformanceCounter Boleh Mencapai Pengukuran Masa Tepat dalam Aplikasi Windows?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn