我想以微秒为单位获得使用C ++实现的程序的准确执行时间。我试图用clock_t来获取执行时间,但这并不准确。
(请注意,微基准测试比较困难。对于在短时间范围内获得有意义的结果,精确的计时器只是必不可少的一小部分。请参见惯用的性能评估方法以了解更多一般警告)
如果您使用的是c ++ 11或更高版本,则可以使用std::chrono::high_resolution_clock
。
一个简单的用例:
auto start = std::chrono::high_resolution_clock::now();
...
auto elapsed = std::chrono::high_resolution_clock::now() - start;
long long microseconds = std::chrono::duration_cast<std::chrono::microseconds>(elapsed).count();
该解决方案具有便携式的优点。
当心微基准测试很难。衡量错误的事情非常容易(例如,基准测试已优化),或者在定时区域中包含页面错误,或者无法考虑CPU频率与Turbo的关系。
看到惯用的绩效评估方式吗?对于一些一般性提示,例如,先测试另一个来进行健全性检查,看看是否可以更改哪个显示速度更快。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句