推荐使用std::chrono库中的steady_clock进行高精度计时,因其不受系统时间调整影响。1. 通过steady_clock::now()获取时间点start和end;2. 计算时间差得duration对象,再用duration_cast转换为microseconds、milliseconds等单位;3. 示例中测量函数执行耗时,输出微秒级精度结果。核心是利用steady_clock记录稳定时间点,结合duration处理时间间隔,实现精确计时。

在C++中进行高精度计时,推荐使用std::chrono库。其中std::chrono::steady_clock是最佳选择,因为它不受系统时间调整的影响,适合测量时间间隔。
1. 使用 steady_clock 获取时间点
steady_clock提供稳定递增的时间源,不会因网络时间同步或手动修改系统时间而跳跃。
获取当前时间点:
auto start = std::chrono::steady_clock::now();// ... 执行代码auto end = std::chrono::steady_clock::now();
2. 使用 duration 计算时间差
两个时间点之差是一个duration对象,可转换为具体单位。
立即学习“C++免费学习笔记(深入)”;
计算耗时并输出:
auto duration = end - start;auto microseconds = std::chrono::duration_cast(duration);auto milliseconds = std::chrono::duration_cast(duration);auto seconds = std::chrono::duration_cast(duration);std::cout << "耗时: " << microseconds.count() << " 微秒n";std::cout << "耗时: " << milliseconds.count() << " 毫秒n";
常用 duration 类型:
nanoseconds:纳秒microseconds:微秒milliseconds:毫秒seconds:秒minutes:分钟hours:小时
3. 高精度计时示例
完整示例:测量函数执行时间
#include #include #includevoid test_function() {std::this_thread::sleep_for(std::chrono::milliseconds(10));}
int main() {auto start = std::chrono::steady_clock::now();
test_function();auto end = std::chrono::steady_clock::now();auto duration = std::chrono::duration_cast(end - start);std::cout << "函数执行耗时: " << duration.count() << " 微秒n";return 0;
}
基本上就这些。用steady_clock::now()记录时间点,相减得duration,再用duration_cast转成需要的单位。不复杂但容易忽略细节。
以上就是C++ chrono库高精度计时_C++ steady_clock与duration用法的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1489633.html
微信扫一扫
支付宝扫一扫