首页 > 其他分享 >std::chrono类

std::chrono类

时间:2024-03-02 12:12:10浏览次数:32  
标签:std clock chrono 时间 duration 时钟

std::chrono 是 C++ 标准库中的一个模块,用于测量时间点和持续时间。它提供了多种时钟(clock)类型、时间点(time_point)类型、持续时间(duration)类型以及相关的函数和操作符,使得开发者能够在不同的精度和语义需求下,以一致的方式处理和操作时间。

主要组件

  1. 时钟(Clocks)

    • std::chrono::system_clock:与系统时间相关,用于获取当前的系统时间(通常是 UTC 时间)。
    • std::chrono::steady_clock:单调时钟,不受系统时间变化(如用户调整系统时间)的影响,适合测量时间间隔。
    • std::chrono::high_resolution_clock:高分辨率时钟,用于需要尽可能高时间分辨率的场景。它通常是一个别名,指向系统可用的最高分辨率的时钟。
    • 用户可以定义自己的时钟类型。
  2. 时间点(Time Points)

    • 表示一个特定的时间点,通常与特定的时钟相关联。例如,std::chrono::system_clock::time_point 表示一个与系统时钟相关的时间点。
  3. 持续时间(Durations)

    • 表示两个时间点之间的时间差。std::chrono 提供了一系列的持续时间类型,如 std::chrono::secondsstd::chrono::millisecondsstd::chrono::microsecondsstd::chrono::nanoseconds 等。
  4. 函数和操作符

    • 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 提供了丰富的功能和灵活性,使得开发者可以根据需要选择适当的时钟、时间点和持续时间类型,以及相应的函数和操作符来处理时间相关的任务。

标签:std,clock,chrono,时间,duration,时钟
From: https://www.cnblogs.com/yubo-guan/p/18048464

相关文章

  • 开源远程桌面rustdesk部署
    官网https://rustdesk.com/客户端支持的平台:x86-64: Windows | Ubuntu | MacAArch64(ARM64): Ubuntu | Android | Mac github地址:https://github.com/rustdesk/rustdesk 服务端:https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/docker/TCP(2......
  • CentOS7 安装FastDFS配置详解
    一、介绍FastDFS是一个开源的高性能分布式文件系统。它的主要功能包括:文件存储,文件同步和文件访问(文件上传和文件下载),它可以解决高容量和负载平衡问题。FastDFS应该满足基于照片共享站点和视频共享站点等文件的网站的要求。FastDFS具有两个角色:tracker和storage。tracker负责调......
  • 清除缓存解决viewBinding不生效没提示,+ 新手,android stdio,kotlin,viewBinding笔记,2024
    我的问题是缓存导致的,文件->清除缓存->清楚并重启头一次用,我也不知道为什么是缓存问题。官方文档链接:https://developer.android.com/topic/libraries/view-binding?hl=zh-cn官方博客链接:https://medium.com/androiddevelopers/use-view-binding-to-replace-findviewbyid-c......
  • [Rust] Exit a program using std::process in Rust
    Inthislessonwe'lllearnhowtoexitaprogramusingthe std::process moduleinRustandit's exit() method. usestd::io;usestd::process;fnmain(){letmutfirst=String::new();io::stdin().read_line(&mutfirst).unwrap()......
  • #根号分治,分块,dfs序#洛谷 7710 [Ynoi2077] stdmxeypz
    题目传送门分析首先把距离变成深度,用dfs序转成区间问题,考虑分块,散块直接改问题是整块,如果模数比较大,可以以深度为第一维下标差分标记,这样查询时就可以前缀和知道答案如果模数比较小,那么给该块打标记,查询时枚举模数即可,然后块长取1000,模数阈值取300,就能尽量减少时间代码#in......
  • fastDFS:fdfs_monitor:last_heart_beat_time 字段的信息来自最后访问的tracker server的
    命令:fdfs_monitor/etc/fdfs/client.conf2>/dev/null|grep-vE'succ|out_'|grep-E'tracker|Stora|Group|heart|sync|time|id|ip|upload'结果: 说明:    last_heart_beat_time的指的是storageserver与trackerserver心跳通讯,收到的trackerserver的心......
  • fastDFS:优化参数配置,让dfs集群更灵敏
    【storage.conf】配置文件#connecttimeoutinseconds#defaultvalueis30#Note:intheintranetnetwork(LAN),2secondsisenough.connect_timeout=2#networktimeoutinsecondsforsendandrecv#defaultvalueis30network_timeout=60#theheartbeati......
  • 远程控制软件RustDesk自建服务器全平台部署及使用教程
    RustDesk挺出名的一款远程控制,远程协助的开源软件。完美替代TeamViewer,ToDesk,向日葵等平台。关键支持自建服务器,更安全私密远程控制电脑!其中客户端支持安卓,且支持控制安卓手机。官方地址官网:https://rustdesk.com/开源地址:https://github.com/rustdesk/一、准备工作1,有自己......
  • std::optional用法
    目的:用于处理异常值,可将异常值导出,不用设置中途退出用法:文件包含optional函数返回值为std::optional<T>(注意:T&不可以,但T*可以),异常值使用std::nullopt用std::optional<T>接收数据结果,.has_value()判断结果是否异常,.value()显示结果.value_or(num)可以设置异常时的......
  • std::endl与"\n"区别
    使用std::endl插入到输出流中时,它不仅会在流中插入新的一行,还会强制刷新(flush)流的缓冲区。这意味着它会确保输出被立即写入到目标设备(例如终端或文件),而不是等待缓冲区被填满或显式刷新。使用'\n'字符在流中插入新行,但不会强制刷新缓冲区。这意味着如果有缓冲区,它可能会等......