windows API 实现精确的打点计时器

利用windows API QueryPerformanceFrequency()和QueryPerformanceCounter()写了一个计算精确时间差的类.

用法:initStart()的时候开始计时,此后每调一次GetTickDelta()返回的是距离上次调用GetTickDelta()所经过的毫秒数。

class MyTick
{
public:
	MyTick() {
		LARGE_INTEGER litmp;
		QueryPerformanceFrequency(&litmp);
		m_cpuClickPerSecond = (double)litmp.QuadPart;
		m_preTick = -1;
	}
	void initStart()
	{
		LARGE_INTEGER litmp;
		QueryPerformanceCounter(&litmp);
		m_preTick = litmp.QuadPart;// 获得初始值
	}
	int GetTickDelta()
	{
		LARGE_INTEGER litmp;
		QueryPerformanceCounter(&litmp);
		LONGLONG curTick = litmp.QuadPart;// 当前tick
		if (m_preTick == -1) {
			return -1;
		} else {
			int res = (int)(1000 * (curTick - m_preTick) / m_cpuClickPerSecond);
			m_preTick = curTick;
			return res;
		}
	}

private:
	double m_cpuClickPerSecond;
	LONGLONG m_preTick;
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值