QueryPerformanceCounter nasıl kullanılır?
Geçenlerde Zamanlayıcı Dersim için mikrosaniye kullanarak milisaniye arasında değiştirmem gerektiğine karar verdim ve biraz araştırma yaptıktan sonra QueryPerformanceCounter muhtemelen güvenli bir bahis olduğuna karar verdim. (Not Mayıs Boost::Posix
uyarı Win32 API beni biraz ertelendi) çalışır. Ancak, gerçekten bunu uygulamak için nasıl emin değilim.
Ne yaptığımı ve Timer kullanmadan atıyorum GetTicks()
vari fonksiyonu startingTicks
değişken ne olursa olsun arıyor. Daha sonra bu süreyi bulmak için sadece startingTicks
, işlevin dönüş değeri çıkarmak ve ben sadece çağrı zamanlayıcı fonksiyonu tekrar reset ve startingTicks atama geçti. Ne yazık ki, gördüğüm kod sadece QueryPerformanceCounter()
, arama kadar basit değil ve bağımsız değişken olarak geçmek için ne yapacağım, emin değilim.
CEVAP
#include <windows.h>
double PCFreq = 0.0;
__int64 CounterStart = 0;
void StartCounter()
{
LARGE_INTEGER li;
if(!QueryPerformanceFrequency(&li))
cout << "QueryPerformanceFrequency failed!\n";
PCFreq = double(li.QuadPart)/1000.0;
QueryPerformanceCounter(&li);
CounterStart = li.QuadPart;
}
double GetCounter()
{
LARGE_INTEGER li;
QueryPerformanceCounter(&li);
return double(li.QuadPart-CounterStart)/PCFreq;
}
int main()
{
StartCounter();
Sleep(1000);
cout << GetCounter() <<"\n";
return 0;
}
Bu program, bir sayıyı 1000'e yakın çıkışı (uyku bu doğru değil, ama 999 gibi olmalıdır windows).
Bu StartCounter() kayıtları kene sayısı performans sayacı CounterStart değişken olan fonksiyon. Bu GetCounter() işlevi bu yana geçen milisaniye sayısı StartCounter() son olarak bir çift, eğer öyleyse GetCounter() döndürür hassasiyeti 0,001 sonra oldu yaklaşık 1 mikrosaniye beri StartCounter() çağrıldı.
Eğer zamanlayıcı saniye yerine kullanmak istiyorsanız, o zaman değiştirin
PCFreq = double(li.QuadPart)/1000.0;
için
PCFreq = double(li.QuadPart);
veya mikrosaniye zaman isterseniz kullanın
PCFreq = double(li.QuadPart)/1000000.0;
Ama gerçekten bir çift verir bu yana yaklaşık kolaylık.
Vim kayıtları nasıl kullanılır?...
Nasıl yansıması genel bir Yöntemi çağı...
Geçişlerini için Dinlenmek nedir ve na...
Nasıl ve kabuk boolean değişkenleri bi...
Raylar 4: nasıl kullanılır(belge)$.() ...