Aru*_*run 1 c++ c++11 c++-chrono
请考虑以下代码段:
#include <chrono>
#include <cassert>
int main()
{
auto result1 = std::chrono::duration_cast<std::chrono::seconds>(std::chrono::high_resolution_clock::now().time_since_epoch());
auto result2 = std::chrono::duration_cast<std::chrono::seconds>(std::chrono::system_clock::now().time_since_epoch());
assert((result2.count() - result1.count()) < 10);
}
Run Code Online (Sandbox Code Playgroud)
我期待两个值之间的计数差异应该是最小的(理想情况下小于一秒).但是对于VS2015,计数的差异大约为数十亿秒.这怎么可能?
它为你主张的原因是因为high_resolution_clock允许(并且经常)有不同的时代system_clock.
它是事实上的标准(未指定但是便携式),其system_clock时代是测量自1970-01-01 00:00:00 UTC以来的时间,忽略了闰秒.
没有事实上的标准high_resolution_clock.在gcc上high_resolution_clock是一个typedef system_clock,等等在gcc平台上,你会注意到完美的同步.在VS和libc ++上high_resolution_clock是一个typedef steady_clock.
对我来说,时代steady_clock就是电脑启动的时代.
这是一个视频教程<chrono>. 它涵盖了许多问题,包括这个问题,大约一个小时.
| 归档时间: |
|
| 查看次数: |
2002 次 |
| 最近记录: |