我想获得用 C++ 实现的程序的精确执行时间(以微秒为单位)。
我尝试使用clock_t获取执行时间,但它不准确。
(请注意,微基准测试是hard。准确的计时器只是短时间区域获得有意义的结果所需的一小部分。看绩效评估的惯用方式?一些更一般的注意事项)
如果您使用的是 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 频率空闲与睿频。
See 绩效评估的惯用方式?一些一般提示,例如通过首先测试另一个来进行健全性检查,看看是否会发生变化,哪个看起来更快。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)