自己随手写的,方便测试绘制代码用。
class CFunTime
{
public:
CFunTime()
{
TimeStart=GetTickCount();
}
~CFunTime()
{
TimeEnd=GetTickCount();
TRACE("time:%d\n", TimeEnd-TimeStart);
}
private:
DWORD TimeStart;
DWORD TimeEnd;
};
这个函数只精确到55ms,1个tick就是55ms。
第二种:
class CFunTime
{
public:
CFunTime()
{
QueryPerformanceCounter(&TimeStart);
}
~CFunTime()
{
QueryPerformanceCounter(&TimeEnd);
TRACE("time:%d\n", TimeEnd.QuadPart-TimeStart.QuadPart);
}
private:
LARGE_INTEGER TimeStart;
LARGE_INTEGER TimeEnd;
};
第三种方法:
#include "Mmsystem.h"
#pragma comment(lib, "Winmm.lib")
class CFunTime
{
public:
CFunTime()
{
TimeStart = timeGetTime();
}
~CFunTime()
{
TimeEnd = timeGetTime();
TRACE("time:%d\n", TimeEnd-TimeStart);
}
private:
DWORD TimeStart;
DWORD TimeEnd;
};
timeGetTime()基本等于GetTickCount(),但是精度更高
第四种方法:
#pragma warning(disable : 4035)
inline unsigned __int64 GetCycleCount(void)
{
_asm _emit 0x0F
_asm _emit 0x31
}
class KTimer
{
unsigned __int64 m_startcycle;
public:
unsigned __int64 m_overhead;
KTimer(void)
{
m_overhead = 0;
Start();
m_overhead = Stop();
}
void Start(void)
{
m_startcycle = GetCycleCount();
}
unsigned __int64 Stop(void)
{
return GetCycleCount()-m_startcycle-m_overhead;
}
};
windows图形编程第15