High resolution time measurement under WinNT
Here is a demo program that does high resolution time measurement under WinNT. It should be used when you need sub mSec resolution with great accuracy and which should not depend on what NT is doing during this time.
Key functions:
QueryPerformanceFrequency ( &liFrequency );
QueryPerformanceCounter ( &liStartTime );
Here is a sample application:
#include <stdio.h>
#include <conio.h>
#include <windows.h>
void main ( int argc, char** argv, char** environ )
{
LARGE_INTEGER liFrequency;
LARGE_INTEGER liStartTime;
LARGE_INTEGER liCurrentTime;
QueryPerformanceFrequency ( &liFrequency );
printf ( "HIGH RESOLUTION PERFORMANCE COUNTER Frequency = %I64d CLOCKS IN SECOND\n",
liFrequency.QuadPart );
if (liFrequency.QuadPart == 0)
{
printf("Your computer does not support High Resolution Performance counter\n");
return;
}
printf ( "Press <ENTER> to start test...\n" );
getchar();
printf ( "\nPress any key to quit test\n\n" );
QueryPerformanceCounter ( &liStartTime );
for (;;)
{
QueryPerformanceCounter ( &liCurrentTime );
printf("Elapsed Time : %8.6f mSec\r",
((double)( (liCurrentTime.QuadPart - liStartTime.QuadPart)* (double)1000.0/(double)liFrequency.QuadPart )) );
if (_kbhit())
break;
}
}