高精度タイマクラス


由来


今日GDI,Direct 2 Dの描画性能をテストしたところ,GetTickCount()関数の精度は15 ms程度であったのに対し,10000個のランダムポイント線分を描画するのに要する時間も数十ms程度と誤差が大きく,従来より高精度(1 ms)のマルチメディアタイマを探して呼び出すことができたので記録した.

テストプラットフォーム


Win 10 x 64 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);
}

呼び出しは簡単だから書かない