测量`std :: clock()`的分辨率

时间:2011-08-16 14:39:58

标签: c++ clock

是否可以衡量std::clock()来电的分辨率?或者这是一个无法影响观察的问题吗?

我写了以下天真的基准:

#include <ctime>
#include <iostream>

int main() {
    std::clock_t initial = std::clock();
    std::clock_t current;
    while (initial == (current = std::clock()));
    std::cout << "Initial: " << initial << std::endl;
    std::cout << "Current: " << current << std::endl;
    std::cout << "Precision: " << (static_cast<double>(current - initial) / CLOCKS_PER_SEC) << "s" << std::endl;
}

我已经运行了几百次,它总是输出0.01s

我的问题是:

  • 上面的代码是衡量clock()
  • 分辨率的好方法
  • 如果没有,那么它有什么问题?怎么可以改进呢?

1 个答案:

答案 0 :(得分:2)

你可以,有点儿。像你正在做的事情是一个很好的第一次 近似。但我不确定它是多么有用:它决定了 分辨率,但它仍然没有告诉你有关准确性的任何信息; 例如,在Windows下,clock是如此不准确以呈现它 无用。