gpt4 book ai didi

c++ - 如何从 boost::timer::cpu_timer 获取耗时(以秒为单位)?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:19:35 34 4
gpt4 key购买 nike

以下粗略代码,基于the documentation , 给我从 boost 中提供的计时器对象中耗时(以秒为单位)。

boost::timer::cpu_timer timer;
// ...do some work...
const boost::timer::nanosecond_type oneSecond(1000000000LL);
return timer.elapsed().user / oneSecond;

这个方法的问题是我的代码中有这个令人不舒服的魔数(Magic Number)。 boost 中是否有某种方法可以从 nanosecond_type 值中为我提供 elapsed().user 调用中可用的 elapsed 秒数,而无需我的代码中有这个神奇的数字吗?

(编辑:)结论:

根据接受的答案,我在生产代码中得到了这个片段:

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;

最佳答案

正如@jogojapan 所建议的那样,boost::chrono会是一个不错的选择。但是,如果您使用 double 作为基础类型,则不需要 duration_cast<>。

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.

关于c++ - 如何从 boost::timer::cpu_timer 获取耗时(以秒为单位)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17310722/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com