如何使用 chrono 为带有累加器计时器的算法计时?
How to use chrono to time an algorithm with an accumulator timer?
我的代码看起来像这样:
std::chrono::milliseconds total;
for (int i=0; i<max; i++) {
auto start = std::chrono::high_resolution_clock::now();
// some code I want to benchmark
total += std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::now() - start);
// some code I don't want to account for in my benchmark
}
std::cout << total.count() << std::endl;
当我运行此代码时,我有时会得到 2、3 甚至 4。但是,其他时候,我会得到一些随机结果,例如139984111729355或-4800608627507701400。
为什么?
std::chrono::milliseconds total; // (1)
for (int i=0; i<max; i++) {
auto start = std::chrono::high_resolution_clock::now();
// some code I want to benchmark
total += std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::now() - start);
// some code I don't want to account for in my benchmark
}
std::cout << total.count() << std::endl;
这是一个完全有效的模式,但问题是 (1( 处的total
变量未初始化。如果将其替换为
std::chrono::milliseconds total{};
然后它应该按预期工作。
相关文章:
- Linux的Cpp上的计时器
- 提升 ASIO 无法识别计时器对象
- 提升 asio 并发计时器取消问题与链
- 使用单体计时器的pthread_cond_timedwait有时会比预期晚超时
- 窗口中的微秒计时器
- 计时器是否从另一个线程启动?
- 如何在 c++ 中创建计时器
- C++回调计时器实现
- 在计时器或主线程外部的命令上销毁/替换线程
- 如何制作每秒从 30 乘 1 倒计时的计时器?
- 保留计时器集合(对象与指针)的最佳方法
- 在网络套接字计时器滴答后增加asio短读错误
- 是否可以仅使用标准 c++/c++11 实现不带"sleep"的计时器?
- 在没有NtSetTimerResolution的Windows上提高计时器分辨率(高分辨率)
- 计时器坏了或者其他什么的
- 功能计时器阻止主功能继续
- IO服务重新启动后,Boost最后期限计时器持续触发
- boost asio计时器是否会在"取消"时阻塞
- Poco 计时器,具有来自同一类的回调
- 如何使用 chrono 为带有累加器计时器的算法计时?