C++实现计时的方法利用QueryPerformanceCounter和QueryPerformanceFrequency函数,其具有较高的时间精度可以实现微秒us级计时,而setTimeEvent只能实现ms级的计时。Sleep计时精度最差,误差一般在ms级别且不稳定。
#pragma once
#include <windows.h>
class MyTimer
{
private:
LONGLONG _freq;
LARGE_INTEGER _begin;
LARGE_INTEGER _end;
public:
long costTime;
public:
MyTimer()
{
LARGE_INTEGER tmp;
QueryPerformanceFrequency(&tmp);
_freq=tmp.QuadPart;
costTime=0;
}
void Start()
{
QueryPerformanceCounter(&_begin);
}
void End()
{
QueryPerformanceCounter(&_end);
costTime=(long)((_end.QuadPart - _begin.QuadPart) * 1000000 / _freq);
}
void Reset()
{
costTime = 0;
}
void Get1Point2ms()
{
QueryPerformanceCounter(&_begin);
while(1)
{
QueryPerformanceCounter(&_end);
costTime=(long)((_end.QuadPart - _begin.QuadPart) * 1000000 / _freq);
if (costTime >= 2000)
{
break;
}
}
}
};
int main()
{
MyTimer mt;
mt.Get1Point2ms();
std::cout<<"所用时间为 " << mt.costTime << "us"<<std::endl;
system("pause");
return 0;
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-44585.html