【发布时间】:2019-02-18 06:53:17
【问题描述】:
以下程序:
#include <chrono>
#include <iostream>
#include <vector>
inline uint64_t now() {
return std::chrono::duration_cast
<std::chrono::nanoseconds>
(std::chrono::system_clock::now()
.time_since_epoch())
.count();
}
int main() {
std::vector<uint64_t> v;
for (int i = 0; i < 1000; i++)
v.push_back(now());
for (int i = 0; i < v.size()-1; i++)
std::cout << v[i+1] - v[i] << std::endl;
}
在 250 到 300 范围内打印数字:
g++ (Ubuntu 8.2.0-7ubuntu1) 8.2.0
与:
Linux 4.18.0-15-generic #16-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux
意思是 std::chrono::system_clock 在这个系统上是纳秒精度(很可能是 gettimeofday 对吧?)。我有几个问题:
在这个系统上
std::chrono::system_clock和std::chrono::steady_clock有什么区别? (是的,我知道它们在标准中的规定不同,我正在考虑这个实现。)所有 libstdc++ 目标的答案是否相同?
所有 libc++ 目标的答案是否相同?
Windows/MSVC 目标上的答案是否相同?
【问题讨论】: