C++,自使用boost和std::chrono的纪元以来的时间?为什么 Boost 版本慢 10 倍?

C++, time since epoch using boost and std::chrono? Why is the Boost version 10 times slower?

本文关键字:为什么 时间 Boost 版本 boost std 纪元 C++ chrono      更新时间:2023-10-16

我想有一个函数来获取自 ns 纪元以来的时间。我有一个使用boost::ptime的解决方案:

auto cur_time = ptime(day_clock::universal_day(), return microsec_clock::universal_time().time_of_day());
return (cur_time - date(1970,1,1)).total_microseconds();

我还使用 std::chrono 测试了解决方案:

return std::chrono::duration_cast< std::chrono::microseconds >(std::chrono::system_clock::now().time_since_epoch()).count();

升压解决方案比 std::chrono 解决方案慢 10 倍。(150ns 与我的 Linux 机器上的 1500ns 相比)。有没有更好(更快)的方法来获取我错过的 Boost::d atetime 中自纪元以来的时间?

Boost 是灵活的跨平台代码,libstdc++(大概是你正在使用的标准库)是和你的编译器一起编写的,是比 boost::chrono 更新的代码,所以更有可能实现最有效的实现。

我总是建议在可能的情况下使用标准库实现而不是 boost,并且在标准库实现完成的情况下。使用单个#ifdef在实现之间切换通常相当容易。

相关文章: