#include <chrono>
是C++标准库中用于处理时间和持续时间的头文件。chrono
库提供了一系列用于表示时间点、时间段和时钟的类和函数。以下是chrono
库中一些常用接口和用法:
- 持续时间(Durations)
std::chrono::duration
是用于表示时间间隔的类模板。你可以用不同的时间单位来表示持续时间,例如秒(std::chrono::seconds
)、毫秒(std::chrono::milliseconds
)、微秒(std::chrono::microseconds
)和纳秒(std::chrono::nanoseconds
)等。
常用用法:
- 创建持续时间:
std::chrono::seconds sec(5);
或auto sec = std::chrono::seconds(5);
- 获取持续时间的数值:
int64_t count = sec.count();
- 时间点(Time Points)
std::chrono::time_point
是用于表示时间点的类模板。通常,时间点是相对于某个时钟(Clock)的。chrono
库提供了以下三种时钟:
std::chrono::system_clock
:系统时钟,它表示真实世界中的时间。std::chrono::steady_clock
:稳定时钟,它保证从程序开始运行到结束,时间只会向前,不会发生调整。std::chrono::high_resolution_clock
:高分辨率时钟,它提供了最高精度的计时。
常用用法:
- 获取当前时间点:
auto now = std::chrono::system_clock::now();
- 时间点转换为时间戳:
std::time_t timestamp = std::chrono::system_clock::to_time_t(now);
- 计算持续时间
你可以对持续时间执行加法、减法和乘法等操作。例如:
auto duration1 = std::chrono::seconds(5);
auto duration2 = std::chrono::milliseconds(500);
auto sum = duration1 + duration2;
- 测量代码执行时间
chrono
库常用于测量代码段的执行时间。以下是一个示例:
#include <iostream>
#include <chrono>
#include <thread>
int main() {
// 记录开始时间点
auto start = std::chrono::high_resolution_clock::now();
// 要测量的代码段
std::this_thread::sleep_for(std::chrono::seconds(1));
// 记录结束时间点
auto end = std::chrono::high_resolution_clock::now();
// 计算持续时间
auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
// 输出结果
std::cout << "Elapsed time: " << duration << " milliseconds" << std::endl;
return 0;
}
在这个示例中,我们使用std::chrono::high_resolution_clock
来测量代码执行时间,并将结果转换为毫秒。