高精度计时器类

由来

今天测试GDI、Direct2D绘图性能时,发现GetTickCount()函数的精度只有15ms左右,而绘制10000个随机点线段所需时间大概也为几十ms,误差比较大,找了下原来有更高精度(1ms)的多媒体定时器可以调用,因此记录下来。

测试平台

Win10 x64
VS 2010 32位对话框工程

代码

class HClock
{
public:
    HClock();
    ~HClock();
public:
    void StartClock(void);
    void EndClock(void);
    double GetTime(void);//in ms
protected:
private:
    LARGE_INTEGER nFreq;
    LARGE_INTEGER nStart;
    LARGE_INTEGER nEnd;
};

HClock::HClock()
{

}

HClock::~HClock()
{

}

void HClock::StartClock(void)
{
    QueryPerformanceFrequency(&nFreq);
    QueryPerformanceCounter(&nStart);
}
void HClock::EndClock(void)
{
    QueryPerformanceCounter(&nEnd);
}
double HClock::GetTime(void)
{
    return(1000.0*(double)(nEnd.QuadPart-nStart.QuadPart)/(double)nFreq.QuadPart);
}

调用很简单,就不写了

你可能感兴趣的:(mfc,计时器,高精度定时器)