Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah QueryPerformanceCounter Boleh Mencapai Pengukuran Masa Tepat dalam C?
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!