Timer

#include <windows.h>

static DWORD gStartTime = 0;
static LARGE_INTEGER gPerfCtrFreq;
static LARGE_INTEGER gPerfCtrStart;

void initializeTimer(void) 
{
        QueryPerformanceFrequency(&gPerfCtrFreq);
        QueryPerformanceCounter(&gPerfCtrStart);
        gStartTime = getFrameTime();
}

int getFrameTime(void)
{
        LARGE_INTEGER   perfCtr;
        __int64                 millis;
        unsigned int hiMillis, loMillis;
        QueryPerformanceCounter(&perfCtr);
        millis = (__int64)((perfCtr.QuadPart - gPerfCtrStart.QuadPart) * 1000.0 / gPerfCtrFreq.QuadPart);
        hiMillis = (unsigned int)(millis >> 32);
        loMillis = (unsigned int)millis;
        
        return loMillis - gStartTime;
}