c++ timer 计时
//z 2014-06-19 17:18:49 L.195'24071 BG57IV3@XCL T1202481319.K.F636940351 [T22,L436,R14,V351]
//z 2014-06-20 14:28:39 L.194'34281 BG57IV3@XCL T816588223 .K.F1994950968[T65,L612,R42,V717]
class ZTimer
{
public:
ZTimer()//z is2120@BG57IV3
{
Init();
}
explicit ZTimer(const char* desc)
{
Init();
if (desc != NULL)
{
strcpy_s(_desc, desc);
}
}
void Reset()
{
++_resetCnt;
QueryPerformanceCounter(&_startCount);
}
double Elapsed()
{
return Elapsed(NULL);
}
double Elapsed(char* subDesc)
{
QueryPerformanceCounter(&_endCount);
double fElapsedTime = (_endCount.QuadPart - _startCount.QuadPart) * 1000.0 / _frequency.QuadPart;
char cBuff[256] = { 0 };
if (subDesc == NULL)
{
sprintf_s(cBuff, "Elapsed %s.T#%-2d.R#%-2d: %.3f", _desc, _cnt++, _resetCnt, fElapsedTime);
}
else
{
sprintf_s(cBuff, "Elapsed %s.%s T#%-2d.R#%-2d: %.3f", _desc,subDesc, _cnt++, _resetCnt, fElapsedTime);
}
OutputDebugStringA(cBuff);
return fElapsedTime;
}
~ZTimer()
{
Elapsed();
}
private:
void Init()
{
memset(_desc, 0, sizeof(_desc));
_startCount.QuadPart = 0;
_endCount.QuadPart = 0;
_cnt = 0;
_resetCnt = 0;
QueryPerformanceFrequency(&_frequency);
QueryPerformanceCounter(&_startCount);
}
private:
LARGE_INTEGER _frequency;
LARGE_INTEGER _startCount;
LARGE_INTEGER _endCount;
char _desc[64];
int _cnt;
int _resetCnt;
};
//z 2014-06-20 14:28:39 L.194'34281 BG57IV3@XCL T816588223 .K.F1994950968[T65,L612,R42,V717]