常用知识总结C++、CMake、Linux

头文件

#include<chrono>

<chrono>C++11 标准引入的时间库头文件 ,专门用于处理时间、时长、时钟、计时,是 C++ 中最标准、最安全、最推荐的时间操作工具。

简单说:它用来测量程序运行时间、做延时、处理时间戳、计算时间差 ,替代了传统不安全的 time.h/<ctime>


核心功能

  1. 定义时间单位:秒、毫秒、微秒、纳秒、分钟、小时等
  2. 定义时钟类型:系统时钟、稳定时钟、高精度时钟
  3. 时间计算:计算时间差、时间相加/相减
  4. 高精度计时:测量代码执行耗时(最常用)
  5. 时间转换:不同时间单位之间自动转换

最常用的 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>

  1. 类型安全:不会把秒和毫秒搞混(传统 C 语言很容易出错)
  2. 高精度:支持纳秒级计时
  3. 标准化:C++ 官方标准,跨平台(Windows/Linux/macOS 通用)
  4. 易读易写:代码直观,不用手动换算单位

总结

  1. <chrono> = C++ 标准时间/计时库
  2. 核心用途:测代码耗时、延时、时间计算
  3. 最常用组合:steady_clock + duration
  4. 替代老旧的 clock()time() 函数
相关推荐
闲云野鹤在人间6 分钟前
KVM虚拟化实战|CentOS‑Stream8 两种安装方式+模板制作+基础使用
linux·运维·服务器·centos
小张同学a.7 分钟前
Docker 容器实战 2—— docker 仓库
linux·运维·服务器·docker·容器
Chester_19999 分钟前
CSP202206C.角色授权
开发语言·数据结构·c++·蓝桥杯
艾莉丝努力练剑11 分钟前
【AI大模型接入SDK】WebSocket & SSE 协议
网络·c++·websocket·网络协议·学习·面试
码匠许师傅12 分钟前
【设计模式精讲】6.抽象工厂(Abstract Factory)
c++·设计模式
GKxx14 分钟前
在 HarmonyOS 上从源码构建 GCC 16(gcc/g++ + libstdc++ + libsanitizer):完整记录
c++·华为·harmonyos·鸿蒙·gcc
晴天的雨.99215 分钟前
类和对象下(内部类,匿名对象,对象拷贝时的编译器优化)
开发语言·c++·算法
Android系统攻城狮19 分钟前
Linux PipeWire深度解析之pw_core_get_registry调用流程与实战(九十一)
linux·运维·服务器·音频进阶·pipewire音频实战进阶
小义_24 分钟前
JDK 深度解析
java·linux·开发语言·python·面试
邪修king26 分钟前
Re:Linux 系统编程篇 (十二):进程篇(一)基础与 fork 系统调用全解
linux·运维·服务器