#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;
}
이 프로그램은 1000에 가까운 숫자를 출력해야합니다 (창 절전은 정확하지는 않지만 999와 같아야합니다).
이 StartCounter()
함수는 성능 카운터가 CounterStart
변수 에있는 틱 수를 기록합니다 . 이 GetCounter()
함수 StartCounter()
는 마지막으로 double로 호출 된 이후의 밀리 초 수를 GetCounter()
반환 하므로 0.001을 반환 하면 StartCounter()
호출 된 이후 약 1 마이크로 초 입니다.
타이머가 초를 대신 사용하도록하려면
PCFreq = double(li.QuadPart)/1000.0;
에
PCFreq = double(li.QuadPart);
또는 마이크로 초를 원한다면
PCFreq = double(li.QuadPart)/1000000.0;
그러나 실제로는 double을 반환하기 때문에 편리합니다.