std::chrono::system_clock使用的精度是多少



下面是我发现的一些代码:

std::cout << std::chrono::system_clock::now().time_since_epoch().count() << std::endl;

这为我打印1662563612364838407;所以它看起来像是打印自UNIX时代(1970-01-01(以来的纳秒数。

但这种精度有保证吗?我在https://en.cppreference.com/w/cpp/chrono/system_clock该值将始终以纳秒为单位。这是否可能在另一个编译器、操作系统或硬件中返回微秒?

不,不能保证。您可以使用时钟period成员别名来获得以秒为单位的刻度周期:

#include <chrono>
#include <iostream>
int main() {
std::cout << std::chrono::system_clock::period::num << " / " << std::chrono::system_clock::period::den;
}

可能输出:

1 / 1000000000

这是否可能在其他编译器、操作系统或硬件中返回微秒?

是的,但您始终可以将其std::chrono::duration_cast转换为已知的持续时间单位。如果你想在几秒钟内完成,例如:

auto dur = std::chrono::duration_cast<std::chrono::seconds>(
std::chrono::system_clock::now().time_since_epoch());
std::cout << dur << 'n';

可能输出:

1662575635s

C++20之前:

std::cout << dur.count() << 'n';
1662575635

注意:保持在chrono域内,直到绝对需要离开它(使用.count()等(。

相关内容

  • 没有找到相关文章

最新更新