Melaksanakan QueryPerformanceCounter untuk Pengukuran Masa Tepat
QueryPerformanceCounter ialah fungsi yang sangat tepat yang disediakan oleh Microsoft Windows untuk mengukur selang masa dalam mikrosaat. Untuk melaksanakannya dengan berkesan dalam C , mari kita rungkai penggunaannya langkah demi langkah.
Pada mulanya, anda perlu memasukkan fail pengepala yang diperlukan:
#include <windows.h>
Seterusnya, isytiharkan dua pembolehubah global untuk menyimpan kekerapan pembilang prestasi dan titik permulaan:
double PCFreq = 0.0; __int64 CounterStart = 0;
Fungsi StartCounter() memulakan prestasi pembilang:
void StartCounter() { LARGE_INTEGER li; if(!QueryPerformanceFrequency(&li)) cout << "QueryPerformanceFrequency failed!\n"; PCFreq = double(li.QuadPart)/1000.0; QueryPerformanceCounter(&li); CounterStart = li.QuadPart; }
QueryPerformanceFrequency mendapatkan semula kekerapan pembilang dan QueryPerformanceCounter merekodkan nilai semasa.
Untuk mengukur masa berlalu sejak StartCounter dipanggil, gunakan fungsi GetCounter():
double GetCounter() { LARGE_INTEGER li; QueryPerformanceCounter(&li); return double(li.QuadPart-CounterStart)/PCFreq; }
Fungsi mengira masa berlalu dengan membandingkan pembilang semasa nilai kepada nilai permulaan, melaraskan untuk kekerapan pembilang.
Contoh Penggunaan:
StartCounter(); Sleep(1000); cout << GetCounter() <<"\n";
Program ini harus mengeluarkan nombor hampir 1000, menunjukkan ketepatan pembilang untuk mengukur tempoh masa dalam mikrosaat.
Anda boleh menyesuaikan ketepatan kaunter dengan mengubah suai PCFreq pengiraan:
Atas ialah kandungan terperinci Bagaimanakah QueryPerformanceCounter Boleh Mencapai Pengukuran Masa Tepat dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!