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; 
};