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!