c++ 准确计时_Window中C++进行精确计时的方法

嗯,程序员一个永恒的追求就是性能吧?

为了衡量性能,自然需要计时。

奈何无论C标准库还是C++标准库,因为通用性的考虑,其time API精度都不高。基本都是毫秒级的。

所以如果要真正精确地衡量程序的性能,还是得靠系统API。下面的计时方式可以精确到<1us。

如果不想了解什么原理,可以直接拷走下面这个简易计时器类。放在一个头文件里,用的时候Include一下就行。

#include

class MyTimer

{

private:

LARGE_INTEGER _freq;

LARGE_INTEGER _start;

LARGE_INTEGER _stop;

public:

MyTimer()

{

QueryPerformanceFrequency(&_freq);

}

inline void start()

{

QueryPerformanceCounter(&_start);

}

inline void stop()

{

QueryPerformanceCounter(&_stop);

}

inline double elapse()

{

return 1e3*(_stop.QuadPart - _start.QuadPart) / _freq.QuadPart;

}

inline long long ticks()

{

return _stop.QuadPart - _start.QuadPart;

}

};

使用方式也很简单: 三个API:start, stop, elapse.

//Example:

MyTimer timer;

timer.start();

MatrixXd m3 = m1 * m2; //Critical Code Here

timer.stop();

printf("Time Elapsed: %lf\n", timer.elapse());

主要用到的系统API有如下两个。

QueryPerformanceCounter

QueryPerformanceFrequency function

看一下MSDN的说明即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值