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

Sta*_*ked 6 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;
}
Run Code Online (Sandbox Code Playgroud)

我跑了几百次,总是输出0.01s.

我的问题是:

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

Jam*_*nze 2

你可以,某种程度上。像你正在做的事情是一个很好的初步近似。但我不确定它有多大用处:它决定了分辨率,但它仍然没有告诉你任何有关准确性的信息;例如,在 Windows 下,clock它非常不准确,以至于无法使用。