#include<windows.h>doublePCFreq=0.0;
__int64 CounterStart=0;voidStartCounter(){
LARGE_INTEGER li;if(!QueryPerformanceFrequency(&li))
cout <<"QueryPerformanceFrequency failed!\n";PCFreq=double(li.QuadPart)/1000.0;QueryPerformanceCounter(&li);CounterStart= li.QuadPart;}doubleGetCounter(){
LARGE_INTEGER li;QueryPerformanceCounter(&li);returndouble(li.QuadPart-CounterStart)/PCFreq;}int main(){StartCounter();Sleep(1000);
cout <<GetCounter()<<"\n";return0;}
This program should output a number close to 1000 (windows sleep isn't that accurate, but it should be like 999).
The StartCounter() function records the number of ticks the performance counter has in the CounterStart variable. The GetCounter() function returns the number of milliseconds since StartCounter() was last called as a double, so if GetCounter() returns 0.001 then it has been about 1 microsecond since StartCounter() was called.
If you want to have the timer use seconds instead then change
PCFreq=double(li.QuadPart)/1000.0;
to
PCFreq=double(li.QuadPart);
or if you want microseconds then use
PCFreq=double(li.QuadPart)/1000000.0;