头文件
#include<chrono>
<chrono> 是 C++11 标准引入的时间库头文件 ,专门用于处理时间、时长、时钟、计时,是 C++ 中最标准、最安全、最推荐的时间操作工具。
简单说:它用来测量程序运行时间、做延时、处理时间戳、计算时间差 ,替代了传统不安全的 time.h/<ctime>。
核心功能
- 定义时间单位:秒、毫秒、微秒、纳秒、分钟、小时等
- 定义时钟类型:系统时钟、稳定时钟、高精度时钟
- 时间计算:计算时间差、时间相加/相减
- 高精度计时:测量代码执行耗时(最常用)
- 时间转换:不同时间单位之间自动转换
最常用的 3 个组件
1. 时长(std::chrono::duration)
表示一段时间,自带单位,不会出错:
cpp
using namespace std::chrono;
seconds s(1); // 1 秒
milliseconds ms(1); // 1 毫秒
microseconds us(1); // 1 微秒
nanoseconds ns(1); // 1 纳秒
minutes m(1); // 1 分钟
hours h(1); // 1 小时
2. 时钟(std::chrono::clock)
三种最常用时钟:
system_clock:系统时钟(可转成年月日)steady_clock:稳定单调时钟(最适合计时,不会回退)high_resolution_clock:高精度时钟
3. 时间点(std::chrono::time_point)
某个时刻的时间戳。
最实用示例:测量代码运行时间
这是 <chrono> 最常用的场景:
cpp
#include <iostream>
#include <chrono> // 核心头文件
using namespace std::chrono;
int main() {
// 记录开始时间
auto start = steady_clock::now();
// ========== 要计时的代码 ==========
int sum = 0;
for (int i = 0; i < 1000000; i++) sum += i;
// =================================
// 记录结束时间
auto end = steady_clock::now();
// 计算耗时:转成毫秒
auto duration_ms = duration_cast<milliseconds>(end - start);
std::cout << "耗时:" << duration_ms.count() << " 毫秒\n";
return 0;
}
另一个常用功能:延时
cpp
// 休眠 2 秒
std::this_thread::sleep_for(seconds(2));
// 休眠 500 毫秒
std::this_thread::sleep_for(milliseconds(500));
为什么要用 <chrono>?
- 类型安全:不会把秒和毫秒搞混(传统 C 语言很容易出错)
- 高精度:支持纳秒级计时
- 标准化:C++ 官方标准,跨平台(Windows/Linux/macOS 通用)
- 易读易写:代码直观,不用手动换算单位
总结
<chrono>= C++ 标准时间/计时库- 核心用途:测代码耗时、延时、时间计算
- 最常用组合:
steady_clock+duration - 替代老旧的
clock()、time()函数