增量时间始终为零

时间:2014-03-09 19:26:54

标签: c++ chrono

long long delta;
auto oldTime = std::chrono::high_resolution_clock::now();
std::vector<int> list;
for (int i = 0; i < 100; i++)
{

    auto x = i * i / std::pow((double)i / 50, 2) ;
    list.push_back(x);
    auto now = std::chrono::high_resolution_clock::now();
    delta = std::chrono::duration_cast<std::chrono::nanoseconds>(now - oldTime).count();
    oldTime = now;
    std::cout << delta << std::endl;
}

delta假设显示ns用于计算,插入和显示简单方程的结果多少,但是一些结果等于0 ..整个迭代如何可以取0ns?

1 个答案:

答案 0 :(得分:2)

这有一些错误。

  1. 您无法在NS时间刻度中进行测量。大多数计算机不支持这一点。而是使用ms进行测试,因为所有现代计算机都支持ms。

  2. 将数据打印到控制台屏幕是一个缓慢的过程。由于您在循环中打印数据,因此它将使整个迭代速度降低,每个循环好6-20 ms,而不是几乎是瞬时的。将打印调用移到循环外部以获得最准确的结果只需将总时间除以迭代次数即可查看每个循环所需的时间。

相关问题