#include <windows.h>
#include <iostream>
using namespace std;

class CGetPeriodTime
...{
private:
union UTIME
...{
LARGE_INTEGER _li;
unsigned long long _time;
};
class InitFreQueuency
...{
public:
unsigned long long s_Frequency;
InitFreQueuency();
};
static InitFreQueuency s_InitFreQueuency;
UTIME _PeriodTime;
public:
void Begin()...{QueryPerformanceCounter(&_PeriodTime._li);}
unsigned long long End();
};
CGetPeriodTime::InitFreQueuency CGetPeriodTime::s_InitFreQueuency;
inline CGetPeriodTime::InitFreQueuency::InitFreQueuency()
...{
UTIME li;
QueryPerformanceFrequency(&li._li);
s_Frequency=li._time;
}
unsigned long long CGetPeriodTime::End()
...{
UTIME li;
QueryPerformanceCounter(&li._li);
_PeriodTime._time=li._time-_PeriodTime._time;
return (_PeriodTime._time*1000)/s_InitFreQueuency.s_Frequency;
}
int main()
...{
CGetPeriodTime time;
time.Begin();
Sleep(1000);
cout<<time.End()<<endl;
return 0;
}
本文介绍了一个基于Windows系统的高精度计时类的实现方法,该类利用了QueryPerformanceCounter和QueryPerformanceFrequency函数来获取系统计数频率并计算时间间隔。
665

被折叠的 条评论
为什么被折叠?



