TCHAR szDebug [100]; __int64 liTicksPerSec64; __int64 liBeginTime64; __int64 liEndTime64; QueryPerformanceFrequency ((LARGE_INTEGER*)&liTicksPerSec64); QueryPerformanceCounter ((LARGE_INTEGER*)&liBeginTime64); // do some stuff... QueryPerformanceCounter ((LARGE_INTEGER*)&liEndTime64); itus = CalcMicroSecInterval (liTicksPerSec64, liBeginTime64, liEndTime64); wsprintf (szDebug, "Time to do stuff: %dms", itus/1000); OutputDebugString (szDebug); // Helper function: int CalcMicroSecInterval (__int64 liTicksPerSec64, __int64 liStart64, __int64 liEnd64) { double dTicksPerUs, dInterval; __int64 iIntTicks64; int iInterval ; int iTicksIn; dTicksPerUs = (double)liTicksPerSec64 / (double)1000000.0; if (liEnd64 > liStart64) iIntTicks64 = liEnd64 - liStart64; else iIntTicks64 = liStart64 - liEnd64; iTicksIn = (int) iIntTicks64; dInterval = ((double) iIntTicks64) / dTicksPerUs; iInterval = (int) dInterval; return iInterval; }