【问题标题】:Why does coliru return the same values for chrono::system_clock::now().time_since_epoch()?为什么 coliru 会为 chrono::system_clock::now().time_since_epoch() 返回相同的值?
【发布时间】: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 可能正在缓存运行结果,因此如果您重新运行相同的代码,它将提供上次运行的数据。

标签: c++ c++11 chrono coliru


【解决方案1】:

Coliru 缓存每个 sn-p 的结果,因此这是预期的行为。

您可以通过简单地更改源文件(例如,添加更多空格或更改注释内容)来强制重新运行。

来源:我认识作者。)

【讨论】:

  • 好的,我不能与那个来源争论。
猜你喜欢
  • 2022-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-09
相关资源
最近更新 更多