C++ C++;,使用boost和std::chrono的时间?为什么Boost版本要慢10倍?

C++ C++;,使用boost和std::chrono的时间?为什么Boost版本要慢10倍?,c++,boost,boost-date-time,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::durat

我想有一个函数,以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::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count();

boost解决方案比std::chrono解决方案慢10倍。(在我的Linux机器上是150ns对1500ns)。在Boost::datetime中有没有更好(更快)的方法来获取我所缺少的自epoch以来的时间?

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


我总是建议在可能的情况下,在标准库实现完成的情况下,使用标准库实现而不是boost。使用单个
#ifdef

在实现之间切换通常相当容易,使用
std::chrono
有什么问题?也许/也许/也许boost的实现效率很低,怀疑你能做些什么。“有没有更好(更快)的方法来获取自大纪元以来的时间”-是的,使用
std::chrono
。boost通常有实验性的实现,稍后会放在标准库中,所以它可能会更慢。