c++ - 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();
解决方案
这是一个内容丰富的小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
推荐阅读
- sorting - 使用 C# 对 ArrayList 中的 2 个数字进行排序?
- swift - 为什么 CoreImage `CIContext.render()` 在渲染过程中执行这个 EXC_BAD_ACCESS 错误?
- java - 如何在可扩展和容错中使用 mongodb 变更流处理可能是 live-livefashion
- spring-boot - 无法使用 Jar 文件在 Docker 中提交容器
- r - 是否有代码来确定 R 中的一行满足的条件数量?
- swiper - 响应时 Swiper.js 强制回流性能问题
- python - ValueError: features 应该是 `Tensor`s 的字典。给定类型:
- microsoft-graph-api - 如何使用 Graph API 将新成员添加到 MS 团队?
- mysql - 使用 Cloud SQL MySQL 的 Google Data Studio 报告只允许一个表
- html - 避免在 Flutter Web 插件包之外使用纯 Web 库