首页 > 解决方案 > chrono 在 C++ 中可以测量的最大时间间隔是多少?

问题描述

我在编程方面经验丰富,但对 C++ 很陌生。我正在尝试测量运行代码所需的时间。将来我可能会编写可能需要数小时/数天才能完成的代码。因此,了解计时时间测量的限制对我来说很重要。以毫秒为单位的精度应该足够了。

我可以测量的最长时间是多少?

我使用了以下代码,如果可以改进,请告诉我:

#include <chrono> 
using namespace std::chrono;

auto start = high_resolution_clock::now();

// calculations here

auto finish = high_resolution_clock::now();

duration<double> elapsed = finish - start; // elapsed time in seconds
cout << elapsed.count();

标签: c++timechronomeasurement

解决方案


这是一个内容丰富的小HelloWorld:

#include <chrono>
#include <iostream>

int
main()
{
    using namespace std::chrono;
    using namespace std;

    using years = duration<double, ratio_multiply<ratio<86'400>, ratio<146'097, 400>>>;
    cout << years{high_resolution_clock::time_point::max() - 
                  high_resolution_clock::now()}.count()
         << " years until overflow\n";
}

我首先创建了一个基于双年的持续时间,以便输出易于阅读。now()然后我从time_point's中减去max(),将其转换为年份并打印出来。

对我来说,这只是输出:

292.256 years until overflow

推荐阅读