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

Measuring the resolution of `std::clock()`

本文关键字:分辨率 clock std 测量      更新时间:2023-10-16

是否可以测量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()分辨率的好方法吗?
  • 如果没有,那么有什么问题?如何改进它?

可以。像你现在所做的是很好的第一次近似。但我不确定它有多有用:它决定了分辨率,但它仍然没有告诉你任何关于精度的信息;例如,在Windows下,clock是如此不准确,以至于渲染它无用的。