Giriş
Şu satırı dahil ederiz.
Örnek 1
Şöyle yaparız. Frequency 1 saniyedeki tick sayısıdır. (Tick sayısı / Frequency) bölümü bize saniye verir. Saniyeyi milisaniyeye çevirmek için 1000 ile çarparız.
Milisaniyeye çevirmek için 1000 ile çarpma yerine frekansın birimini en baştan değiştirebiliriz. Şöyle yaparız.
Şu satırı dahil ederiz.
#include <windows.h>
Hassasiyeti (precision) nanosaniye cinsinden . Windows'un doğruluğu (accuracy) 200-300 mikrosaniye civarında.Örnek 1
Şöyle yaparız. Frequency 1 saniyedeki tick sayısıdır. (Tick sayısı / Frequency) bölümü bize saniye verir. Saniyeyi milisaniyeye çevirmek için 1000 ile çarparız.
long long milliseconds_now() {
static LARGE_INTEGER s_frequency;
static BOOL s_use_qpc = QueryPerformanceFrequency(&s_frequency);
LARGE_INTEGER now;
QueryPerformanceCounter(&now);
return (1000LL * now.QuadPart) / s_frequency.QuadPart;
}
Daha sonra şöyle yaparız.
// Somewhere else...
// ...
long long start = milliseconds_now();
// ....
long long elapsed = milliseconds_now() - start;
Örnek 2
Milisaniyeye çevirmek için 1000 ile çarpma yerine frekansın birimini en baştan değiştirebiliriz. Şöyle yaparız.
#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;
}
Hiç yorum yok:
Yorum Gönder