以下粗略代码基于文档,给出了boost中提供的计时器对象所用的经过时间(以秒为单位).
boost::timer::cpu_timer timer;
// ...do some work...
const boost::timer::nanosecond_type oneSecond(1000000000LL);
return timer.elapsed().user / oneSecond;
Run Code Online (Sandbox Code Playgroud)
这种方法的问题在于我的代码中有这个令人不舒服的幻数.在boost中是否有一些方法可以让我在调用elapsed().user时可用的nanosecond_type值中经过几秒钟,而没有在我的代码中使用这个神奇的数字?
(编辑:)结论:
根据接受的答案,我最终在我的生产代码中使用了这个片段:
boost::timer::cpu_timer timer;
// ...do some work...
auto nanoseconds = boost::chrono::nanoseconds(timer.elapsed().user + timer.elapsed().system);
auto seconds = boost::chrono::duration_cast<boost::chrono::seconds>(nanoseconds);
std::cout << seconds.count() << std::endl;
Run Code Online (Sandbox Code Playgroud)
正如@jogojapan所说,boost :: chrono 将是一个不错的选择.但如果您使用duration_cast <>,则不需要duration_cast <> double.
typedef boost::chrono::duration<double> sec; // seconds, stored with a double
sec seconds = boost::chrono::nanoseconds(timer.elapsed().user);
std::cout << seconds.count() << "s\n"; // gives the number of seconds, as double.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12760 次 |
| 最近记录: |