/* 介绍<chrono> -- 一个精确中立的时间和日期库 * 时钟: * * std::chrono::system_clock: 依据系统的当前时间 (不稳定) * std::chrono::steady_clock: 以统一的速率运行(不能被调整) * std::chrono::high_resolution_clock: 提供最小可能的滴答周期 * (可能是steady_clock或者system_clock的typedef) * * std:ratio<>表示时钟周期,即时间的计量单位 */ std::ratio<1,10> r; // cout << r.num << "/" << r.den << endl; cout << chrono::system_clock::period::num << "/" << chrono::system_clock::period::den << endl; cout << chrono::steady_clock::period::num << "/" << chrono::steady_clock::period::den << endl; cout << chrono::high_resolution_clock::period::num << "/" << chrono::high_resolution_clock::period::den << endl; /* * * std:chrono::duration<>: 表示持续的时间 * duration<int, ratio<1,1>> -- 秒数存储在一个int中 (默认) * duration<double, ration<60,1>> -- 分钟数储存在一个double中 * 库中定义了如下方便的duration: * nanoseconds, microseconds, milliseconds, seconds, minutes, hours * system_clock::duration -- duration<T, system_clock::period> * T是一个有符号的算术类型, 可以是int或long或其他 */ chrono::microseconds mi(2745); chrono::nanoseconds na = mi; chrono::milliseconds mill = chrono::duration_cast<chrono::milliseconds>(mi); // 当可能发生信息丢失的时候,要显式地转换 // 直接截断,而不是四舍五入 mi = mill + mi; // 2000 + 2745 = 4745 mill = chrono::duration_cast<chrono::milliseconds>(mill + mi); // 6 cout << na.count() << std::endl; cout << mill.count() << std::endl; cout << mi.count() << std::endl; cout << "min: " << chrono::system_clock::duration::min().count() << "\n"; cout << "max: " << chrono::system_clock::duration::max().count() << "\n"; /* std::chrono::time_point<>: 表示一个时间点 * -- 自从一个指定的时间点开始的过去的时间长度: * 00:00 January 1, 1970 (Corordinated Universal Time - UTC) -- 时钟的纪元 * time_point<system_clock, milliseconds>: 依据system_clock, 自从纪元开始经过的毫秒数 * * typdefs system_clock::time_point -- time_point<system_clock, system_clock::duration> steady_clock::time_point -- time_point<steady_clock, steady_clock::duration> */ // 使用系统时间 chrono::system_clock::time_point tp = chrono::system_clock::now(); cout << tp.time_since_epoch().count() << endl; tp = tp + seconds(2); // 因为tp精度高,不需要转换 cout << tp.time_since_epoch().count() << endl; // 计算时间间隔最好用steady_clock chrono::steady_clock::time_point start = chrono::steady_clock::now(); cout << "I am bored" << endl; chrono::steady_clock::time_point end = chrono::steady_clock::now(); chrono::steady_clock::duration d = end - start; if (d == chrono::steady_clock::duration::zero()) //0时间长度的表示 cout << "no time elapsed" << endl; cout << duration_cast<microseconds>(d).count() << endl; // 使用system_clock可能得到不正确的值
标签:
C++11
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具