时间总是零

delta time always zero

本文关键字:时间      更新时间:2023-10-16
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。为什么整个迭代只需要0秒??

这里有一些错误。

  1. 无法在NS时间尺度中测量。大多数电脑都不支持这个功能。请用ms测试,因为所有现代计算机都支持ms。

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