我如何使用纳秒来实例化boost :: date_time :: time_duration



我觉得我在这里缺少一些明显的东西。我可以轻松地使用毫秒,微秒或秒的时间来进行时间_

time_duration t1 = seconds(1);
time_duration t2 = milliseconds(1000);
time_duration t3 = microseconds(1000000);

,但纳米秒没有功能。将普通整数的纳秒值转换为time_duration的诀窍是什么?

我在Debian Linux上的AMD64架构上。Boost版本1.55。

boost::posix_time::microseconds实际上是subsecond_duration<boost::posix_time::time_duration, 1000000>。所以...

#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";
}

打印

00:00:01

更新

的确,在Boost DateTime库的编译选项中,您可以看到一个选项可以选择纳秒分辨率:

默认情况下,posix_time系统使用一个64位整数 内部提供微秒级分辨率。作为 替代方案,一个64位整数和32位整数的组合 (96位分辨率(可用于提供纳米秒 决议。默认实现可能会提供更好的性能 以及许多不适用的不紧凑的内存使用量 需要纳米秒的分辨率。

使用替代分辨率(96位纳米秒(变量 BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG必须在库中定义 用户项目文件(即makefile,jamfile等(。这个宏不是 Gregorian系统使用,因此在建造时没有影响 图书馆。

的确,您可以使用:

检查它

活在coliru

#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";
}

相关内容

  • 没有找到相关文章

最新更新