www.pudn.com > NetPaw.rar > Timer.h
#pragma once
// a very precise time class, use CPU core frequency to measure tick
class CMediaTimer
{
public:
CMediaTimer()
{
m_bInitialized = QueryPerformanceFrequency( (LARGE_INTEGER *)&m_lnFrequency );
m_lnStartTime = 0;
m_bTimerStarted = false;
}
// start timer
void Start()
{
if( m_bInitialized && QueryPerformanceCounter( (LARGE_INTEGER *)&m_lnStartTime ) )
{
m_bTimerStarted = true;
}
}
// stop timer and return time
double Stop()
{
if( !m_bTimerStarted )
return 0.0;
unsigned __int64 lnEndTime, lnElapsedTime;
if( QueryPerformanceCounter( (LARGE_INTEGER *)&lnEndTime ) )
{
lnElapsedTime = lnEndTime - m_lnStartTime;
}
else
{
lnElapsedTime = 0;
}
// give a second precision
return ( (double)lnElapsedTime / (double)m_lnFrequency );
}
private:
BOOL m_bInitialized;
bool m_bTimerStarted;
unsigned __int64 m_lnFrequency;
unsigned __int64 m_lnStartTime;
};