【发布时间】:2015-06-02 13:06:11
【问题描述】:
在 coliru 上测试其他人的代码时,我注意到 std::chrono::system_clock::now().time_since_epoch() 在多次运行时返回相同的值。我在coliru上用g++和clang++测试了下面的代码。
#include <iostream>
#include <chrono>
int main()
{
auto seed = std::chrono::system_clock::now().time_since_epoch().count();
std::cout << seed << "\n";
std::cout << std::chrono::system_clock::now().time_since_epoch().count() << "\n";
return 0;
}
输出:
g++ -std=c++11 -O2 -Wall -pedantic -pthread main.cpp && ./a.out
1433249917642594133
1433249917642674289
它在ideone 上按预期工作,显然在我的电脑上。
有谁知道为什么 coliru 每次运行都返回相同的值?
【问题讨论】:
-
如果您在每次运行时稍微编辑代码,例如添加空格,然后每次运行的结果都会有所不同
-
@911 好的,很有趣。诡异的。所以实现与
system_clock无关。我的问题仍然存在。或者它甚至更广泛。chrono的大肠杆菌版本不可靠吗? -
我认为如果没有更改代码,则会返回旧结果。
-
@911 知道了。我在 Firefox 中打开了一个私人窗口,复制并粘贴了代码并得到了一个不同的号码。但是,如果您在第 2 次运行中添加空格,并在第 3 次运行中删除相同的空格,则结果与第 1 次运行相同。
-
coliru 可能正在缓存运行结果,因此如果您重新运行相同的代码,它将提供上次运行的数据。