C++,自使用boost和std::chrono的纪元以来的时间?为什么 Boost 版本慢 10 倍?
C++, time since epoch using boost and std::chrono? Why is the Boost version 10 times slower?
我想有一个函数来获取自 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
在实现之间切换通常相当容易。
相关文章:
- 使用简单类型列表实现的指数编译时间.为什么
- 为什么std::互斥需要很长的、非常不规则的时间来共享
- 为什么字符串比较的 == 运算符相对于任一字符串长度线性时间(似乎)?
- 为什么根据测量位置测量经过的时间时会有很大的不同?
- 为什么在尝试测量函数返回所需的时间时,我的运行时编号是错误的?
- 我不明白为什么我的代码不起作用并且需要更长的时间来运行
- 为什么切换 for 循环的顺序会显著改变执行时间?
- 为什么一种算法在相同的时间复杂度下比另一种算法更快?
- 为什么在C++中获取日期和/或时间如此复杂?
- 为什么具有静态存储持续时间的同一内联变量在包含在 VS2017 编译的两个翻译单元中时会构造和销毁两次
- 为什么 std::chrono 在测量循环和编译器优化的并行 OpenMP 的执行时间时不起作用?
- 随着时间的推移,我的程序越来越慢,我不知道为什么.内存泄漏
- 为什么for循环中的异步不能提高执行时间
- 为什么Regex(c++)需要指数时间
- C++,自使用boost和std::chrono的纪元以来的时间?为什么 Boost 版本慢 10 倍?
- 为什么 C++ openMP 程序执行时间更长
- 为什么 Boost unordered_map 在第一次插入时需要太多时间?
- 为什么我的代码在"decrease to zero"问题中被时间超过了
- 为什么这段代码需要这么长时间才能用 g++ 编译?
- 为什么时间测量有时会返回重复值(15.625ms 的倍数)?