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
Lepaskan: 2024-12-17 15:59:11
asal
846 orang telah melayarinya

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;
Salin selepas log masuk

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;
}
Salin selepas log masuk

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;
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan