如何用纳秒实例化boost::date\u time::time\u持续时间?
我觉得我错过了一些明显的东西。通过执行以下操作,我可以轻松地以毫秒、微秒或秒为单位确定时间持续时间:如何用纳秒实例化boost::date\u time::time\u持续时间?,boost,boost-date-time,Boost,Boost Date Time,我觉得我错过了一些明显的东西。通过执行以下操作,我可以轻松地以毫秒、微秒或秒为单位确定时间持续时间: time_duration t1 = seconds(1); time_duration t2 = milliseconds(1000); time_duration t3 = microseconds(1000000); 但纳秒内没有任何功能。将普通整数纳秒值转换为时间持续时间的诀窍是什么 我在DebianLinux上使用amd64体系结构。Boost 1.55版。Boost::posix_
time_duration t1 = seconds(1);
time_duration t2 = milliseconds(1000);
time_duration t3 = microseconds(1000000);
但纳秒内没有任何功能。将普通整数纳秒值转换为时间持续时间的诀窍是什么
我在DebianLinux上使用amd64体系结构。Boost 1.55版。Boost::posix_时间::微秒实际上是
亚秒持续时间
。所以
#include <boost/date_time/posix_time/posix_time.hpp>
using nanoseconds = boost::date_time::subsecond_duration<boost::posix_time::time_duration, 1000000000>;
int main() {
boost::posix_time::time_duration t = nanoseconds(1000000000);
std::cout << t << "\n";
}
更新
实际上,在Boost DateTime库的中,您可以看到有一个选择纳秒分辨率的选项:
默认情况下,posix_时间系统使用单个64位整数
内部提供微秒级分辨率。作为
或者,64位整数和32位整数的组合
(96位分辨率)可用于提供纳秒级
决议。默认实现可以提供更好的性能
对于许多不使用内存的应用程序,内存使用更加紧凑
需要纳秒分辨率
要使用备用分辨率(96位纳秒)变量
必须在库中定义BOOST\u DATE\u TIME\u POSIX\u TIME\u STD\u CONFIG
用户项目文件(即Makefile、Jamfile等)。此宏不可用
由格里高利体系使用,因此在建筑时不起作用
图书馆
实际上,您可以使用以下方法进行检查:
#define BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG
#include <boost/date_time/posix_time/posix_time.hpp>
int main() {
using namespace boost::posix_time;
std::cout << nanoseconds(1000000000) << "\n";
}
#定义BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG
#包括
int main(){
使用名称空间boost::posix_time;
std::库不这样定义有什么原因吗?@mpr我想默认库配置使用微秒分辨率,用记录的开关更新了答案,使用纳秒分辨率(注意ABI兼容性和ODR问题。在构建整个库和相关翻译单元时,始终使用文档中的标志!)
#define BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG
#include <boost/date_time/posix_time/posix_time.hpp>
int main() {
using namespace boost::posix_time;
std::cout << nanoseconds(1000000000) << "\n";
}