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

时间:2018-07-08 13:57:21

标签: c++ boost boost-date-time

我想有一个函数来获取自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();

boost解决方案比std :: chrono解决方案慢10倍。 (我的Linux机器上为150ns与1500ns)。有没有一种更好(更快)的方法来获取自我丢失的Boost :: datetime以来的时间?

1 个答案:

答案 0 :(得分:1)

Boost是灵活的跨平台代码,libstdc ++(可能是您正在使用的标准库)是与编译器一起编写的,并且比boost :: chrono更新的代码,因此更有可能实现最有效的实现。

我总是建议尽可能在标准库实现完整的地方使用标准库实现而不是boost。通常,使用单个Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle::class => ['all' => true], 在实现之间进行切换就相当容易了。