std::chrono类
std::chrono
是 C++ 标准库中的一个模块,用于测量时间点和持续时间。它提供了多种时钟(clock)类型、时间点(time_point)类型、持续时间(duration)类型以及相关的函数和操作符,使得开发者能够在不同的精度和语义需求下,以一致的方式处理和操作时间。
主要组件
-
时钟(Clocks):
std::chrono::system_clock
:与系统时间相关,用于获取当前的系统时间(通常是 UTC 时间)。std::chrono::steady_clock
:单调时钟,不受系统时间变化(如用户调整系统时间)的影响,适合测量时间间隔。std::chrono::high_resolution_clock
:高分辨率时钟,用于需要尽可能高时间分辨率的场景。它通常是一个别名,指向系统可用的最高分辨率的时钟。- 用户可以定义自己的时钟类型。
-
时间点(Time Points):
- 表示一个特定的时间点,通常与特定的时钟相关联。例如,
std::chrono::system_clock::time_point
表示一个与系统时钟相关的时间点。
- 表示一个特定的时间点,通常与特定的时钟相关联。例如,
-
持续时间(Durations):
- 表示两个时间点之间的时间差。
std::chrono
提供了一系列的持续时间类型,如std::chrono::seconds
、std::chrono::milliseconds
、std::chrono::microseconds
、std::chrono::nanoseconds
等。
- 表示两个时间点之间的时间差。
-
函数和操作符:
std::chrono::duration_cast
:用于在不同类型的持续时间之间进行转换。- 各类比较和算术操作符,用于对时间点和持续时间进行比较和运算。
示例
下面是一个使用 std::chrono
的示例,展示了如何测量代码段的执行时间:
#include <iostream>
#include <chrono>
int main() {
// 记录开始时间
auto start = std::chrono::steady_clock::now();
// 在这里执行一些代码
for (int i = 0; i < 1000000; ++i) {
// 一些计算或操作
}
// 记录结束时间
auto end = std::chrono::steady_clock::now();
// 计算执行时间
auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
// 输出执行时间
std::cout << "Execution time: " << duration.count() << " milliseconds" << std::endl;
return 0;
}
在这个示例中,我们使用了 std::chrono::steady_clock
来测量代码段的执行时间,因为 steady_clock
不受系统时间变化的影响,提供了稳定的时间测量。我们使用 now()
函数获取开始和结束时间点,并通过 duration_cast
将时间差转换为毫秒(milliseconds
),然后输出执行时间。
std::chrono
提供了丰富的功能和灵活性,使得开发者可以根据需要选择适当的时钟、时间点和持续时间类型,以及相应的函数和操作符来处理时间相关的任务。
Do not communicate by sharing memory; instead, share memory by communicating.
分类:
C/C++
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)