Android常用C++特性之std::chrono
声明:本文内容生成自ChatGPT,目的是为方便大家了解学习作为引用到作者的其他文章中。
std::chrono 是 C++11 引入的标准库中的时间处理工具,提供了以多种精度进行时间测量、处理和操作的功能。它允许开发者处理时间点(time_point)和时间间隔(duration),并且支持从高精度(如纳秒)到较大单位(如秒、分钟)的转换。
主要组件
std::chrono 主要由以下几个组件组成:
- 时间点 (
time_point):表示一个特定的时间。 - 时间间隔 (
duration):表示两个时间点之间的差异。 - 时钟 (
clock):用于获取当前时间的工具。
1. duration(时间间隔)
std::chrono::duration 用于表示两个时间点之间的时间差异,可以以不同的时间单位表示,如秒、毫秒、微秒、纳秒等。常见的时间单位有:
std::chrono::nanoseconds:以纳秒为单位的时间间隔。std::chrono::microseconds:以微秒为单位的时间间隔。std::chrono::milliseconds:以毫秒为单位的时间间隔。std::chrono::seconds:以秒为单位的时间间隔。std::chrono::minutes:以分钟为单位的时间间隔。std::chrono::hours:以小时为单位的时间间隔。
示例:使用 duration
#include <iostream>
#include <chrono>int main() {std::chrono::seconds sec(1); // 1 秒std::chrono::milliseconds ms = sec; // 将秒转换为毫秒std::chrono::nanoseconds ns = sec; // 将秒转换为纳秒std::cout << "1 second is " << ms.count() << " milliseconds." << std::endl;std::cout << "1 second is " << ns.count() << " nanoseconds." << std::endl;return 0;
}
2. time_point(时间点)
std::chrono::time_point 用于表示某一时刻的时间点。time_point 通常结合时钟使用,比如 std::chrono::system_clock 或 std::chrono::steady_clock。
示例:使用 time_point
#include <iostream>
#include <chrono>
#include <thread>int main() {// 获取当前时间点auto start = std::chrono::steady_clock::now();// 模拟一些工作std::this_thread::sleep_for(std::chrono::milliseconds(500));// 获取结束时间点auto end = std::chrono::steady_clock::now();// 计算经过的时间std::chrono::duration<double> elapsed_seconds = end - start;std::cout << "Elapsed time: " << elapsed_seconds.count() << " seconds." << std::endl;return 0;
}
3. clock(时钟)
std::chrono 提供了三种常用的时钟类型,用于获取当前时间点:
std::chrono::system_clock:表示系统时间,通常用于获取当前的时间和日期。std::chrono::steady_clock:表示单调递增的时钟,适用于计算时间间隔,不会被系统时间调整所影响。std::chrono::high_resolution_clock:表示高精度的时钟,是steady_clock或system_clock的别名,取决于实现。
示例:使用 system_clock
#include <iostream>
#include <chrono>
#include <ctime>int main() {// 获取系统时间auto now = std::chrono::system_clock::now();// 将时间点转换为 time_t 类型std::time_t current_time = std::chrono::system_clock::to_time_t(now);std::cout << "Current time: " << std::ctime(¤t_time) << std::endl;return 0;
}
4. 时间单位的转换
可以使用 std::chrono::duration_cast 来进行时间单位之间的转换。
示例:单位转换
#include <iostream>
#include <chrono>int main() {std::chrono::seconds sec(1);// 将 1 秒转换为毫秒std::chrono::milliseconds ms = std::chrono::duration_cast<std::chrono::milliseconds>(sec);std::cout << "1 second is " << ms.count() << " milliseconds." << std::endl;return 0;
}
5. 测量时间间隔
使用 steady_clock 或 high_resolution_clock 可以精确测量操作的执行时间。
示例:测量操作的执行时间
#include <iostream>
#include <chrono>
#include <thread>int main() {// 开始计时auto start = std::chrono::high_resolution_clock::now();// 模拟长时间操作std::this_thread::sleep_for(std::chrono::seconds(2));// 结束计时auto end = std::chrono::high_resolution_clock::now();// 计算耗时std::chrono::duration<double> elapsed = end - start;std::cout << "Operation took: " << elapsed.count() << " seconds." << std::endl;return 0;
}
总结
std::chrono是 C++11 中提供的时间库,用于处理时间点和时间间隔。- 通过
duration表示时间间隔,time_point表示时间点。 - 支持不同精度的时间单位,如纳秒、毫秒、秒等。
- 提供了三种常用时钟类型:
system_clock、steady_clock和high_resolution_clock。 - 提供精确的时间测量和单位转换功能。
相关文章:
Android常用C++特性之std::chrono
声明:本文内容生成自ChatGPT,目的是为方便大家了解学习作为引用到作者的其他文章中。 std::chrono 是 C11 引入的标准库中的时间处理工具,提供了以多种精度进行时间测量、处理和操作的功能。它允许开发者处理时间点(time_point&am…...
[Oracle] ORA-04036: 实例使用的 PGA 内存超出 PGA_AGGREGATE_LIMIT
有说该问题是因为触发了Oracle的BUG导致,最直接的解决方法就是重启数据库实例; Linux下数据库实例重启...
一次 Spring 扫描 @Component 注解修饰的类坑
问题现象 之前遇到过一个问题,在一个微服务的目录下有相同功能 jar 包的两个不同的版本,其中一个版本里面的类有 Component 注解,另外一个版本的类里面没有 Component 注解,且按照加载的顺序,没有 Component 注解的 j…...
深度学习:调整学习率
目录 前言 一、什么是调整学习率? 二、调整学习率的作用 三、怎么调整学习率 1.有序调整 2.自适应调整 3.自定义调整 4.调整示例 前言 在深度学习中,调整学习率是非常重要的,它对模型的训练效果和收敛速度有显著影响。 一、什么是调整…...
Java项目实战II基于Java+Spring Boot+MySQL的厨艺交流平台设计与实现(源码+数据库+文档)
目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在美食文化…...
第二十节:学习Redis缓存数据库实现增删改查(自学Spring boot 3.x的第五天)
这节记录下如何使用redis缓存数据库。 第一步: 先在服务器端安装redis, 下载地址:Releases tporadowski/redis GitHub。 第二步: 安装redis客户端可视化管理软件redisDesktopmanager Redis Desktop Manager - Download 第…...
Android SQLite的基本使用、生成Excel文件保存到本地
1. Android SQLite的基本使用 1.1. SQLiteOpenHelper Android 底层已经通过一个SQLiteOpenHelper的抽象类将数据库的创建,以及修改,更新等都放在了里面。 要使用它必须实现它的OnCreate(SQLiteDatabase db),onUpgrade(SQLiteDatabase db, int…...
记一次因视频编码无法在浏览器播放、编码视频报错问题
起因 ... f cv2.VideoWriter_fourcc(*h264) ...我这边使用h264编码会提示 OpenCV: FFMPEG: tag 0x34363268/h264 is not supported with codec id 27 and format mp4 / MP4 (MPEG-4 Part 14) OpenCV: FFMPEG: fallback to use tag 0x31637661/avc1 [ERROR:02.711] global /i…...
【深度学习】深度卷积神经网络(AlexNet)
在 LeNet 提出后,卷积神经网络在计算机视觉和机器学习领域中很有名气,但并未起到主导作用。 这是因为 LeNet 在更大、更真实的数据集上训练的性能和可行性还有待研究。 事实上,在 20 世纪 90 年代到 2012 年之间的大部分时间里,…...
C语言扫盲
文章目录 C版本C语言特征GCCprintf数据类型函数指针内存管理void指针 Struct结构和Union结构typedef预处理器make工具cmake工具Projectintegral of sinc functionemulator embedded systeman event schedule 补充在线Linux终端安装Linux参考 建议还是国外教材学习…人家的PPT比…...
视频融合共享平台LntonAIServer视频智能分析抖动检测算法和过亮过暗检测算法
LntonAIServer作为一款智能视频监控平台,集成了多种先进的视频质量诊断功能,其中包括抖动检测和过暗检测算法。这些算法对于提升视频监控系统的稳定性和图像质量具有重要意义。 以下是对抖动检测算法和过暗检测算法的应用场景及优势的详细介绍。 一、L…...
【笔记篇】Davinci Configurator OS模块(上)
目录 1 简介1.1 架构概览2 功能描述2.1 特性2.2 规范偏离2.2.1 API 函数的泛型偏离2.2.2 可信函数 API 偏离2.2.3 服务保护偏离2.2.4 代码保护2.2.5 SyncScheduleTable API 偏差2.2.6 CheckTask/ISRMemoryAccess API 偏差2.2.7 中断 API 偏差2.2.8 Cross Core Getter API2.2.9 …...
19.3 打镜像部署到k8s中,prometheus配置采集并在grafana看图
本节重点介绍 : 打镜像,导出镜像,传输到各个节点并导入运行该项目配置prometheus和grafana 打镜像 本地build docker build -t ink8s-pod-metrics:v1 .build过程 导出镜像 docker save ink8s-pod-metrics > ink8s-pod-metrics.tar 传输到各个node…...
如何让系统u盘重新可用
目录 引言开始操作遇到的错误 引言 我们将 u 盘制作为系统 U 盘后,U 盘就没法在电脑中正常识别出了。当装完系统,不再需要 u 盘充当系统 U 盘想要正常使用该 U 盘,这时候就需要有些操作,让这个 U 盘正常化。 上图就是充当系统盘的…...
14.安卓逆向-frida基础-编写hook脚本2
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于:图灵Python学院 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要盲目相信。 工…...
车辆零部件检测和分割数据集-车体数据集-yolo格式-yolov5-yolov10可用
这些标签是用于实例分割任务中的类别,通常在汽车图像识别或自动驾驶技术中使用。以下是这些类别: back_bumper - 后保险杠back_glass - 后挡风玻璃back_left_door - 后左车门back_left_light - 后左灯back_right_door - 后右车门back_right_light - 后右…...
甄选范文“论分布式存储系统架构设计”,软考高级论文,系统架构设计师论文
论文真题 分布式存储系统(Distributed Storage System)通常将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式存储系统采用可扩展的…...
第十四章:html和css做一个心在跳动,为你而动的表白动画
💖 让心跳加速,传递爱意 💖 在这个特别的时刻,让爱在跳动中绽放!🌟 无论是初次相遇的心动,还是陪伴多年的默契,我们的心总在为彼此跳动。就像这颗炙热的爱心,随着每一次的跳动,传递着满满的温暖与期待。 在这个浪漫的季节,让我们一同感受爱的律动!无论你是在…...
poetry安装
文章目录 前言1. 为什么pip install poetry 会造成依赖冲突1.1 全局环境依赖混淆:1.2 工具和项目之间的冲突:1.3 缺乏依赖隔离:1.4 多出很多额外依赖: 2. 不推荐pipx安装3. poetry高级安装3.1 默认安装路径3.2自定义安装 4. 安装p…...
Proteus如何添加数码管
1、打开安装好的Proteus,点击上方菜单栏中的“库”,再选择“从库选取零件”,或者在左侧元件列表中单击鼠标右键,再点击右键菜单中的“从库中挑选”选项。 2、之后在元器件库中,点击类别中的“Optoelectronics”&#…...
终极指南:5分钟让GitHub访问速度翻倍的智能DNS加速方案
终极指南:5分钟让GitHub访问速度翻倍的智能DNS加速方案 【免费下载链接】FastGithub github定制版的dns服务,解析访问github最快的ip 项目地址: https://gitcode.com/gh_mirrors/fa/FastGithub 还在为GitHub克隆代码时的漫长等待而烦恼吗…...
大模型KV缓存量化技术:原理、优化与实践
1. KV缓存量化技术背景解析在Transformer架构的大语言模型(LLM)推理过程中,注意力机制的计算复杂度与序列长度呈平方关系增长。为优化这一过程,现代LLM服务系统普遍采用KV缓存(Key-Value Cache)技术,将注意力层计算过的键值对存储在内存中供后…...
GBase 8c 在过程里记流水时要小心自治事务边界
GBase 8c 在过程里记流水时要小心自治事务边界 我最近看 GBase 8c 自治事务资料时,觉得它特别适合拿来讨论一个开发现场经常遇到的问题:业务过程失败了,排障流水也跟着回滚了。等真正去查问题时,只剩应用日志里几行模糊报错&#…...
终极ASCII流程图绘制指南:5分钟从零开始掌握专业文本图表制作
终极ASCII流程图绘制指南:5分钟从零开始掌握专业文本图表制作 【免费下载链接】asciiflow ASCIIFlow 项目地址: https://gitcode.com/gh_mirrors/as/asciiflow ASCIIFlow是一款完全免费、无需安装的在线ASCII流程图绘制工具,让任何人都能用简单的…...
Potrace实战指南:5分钟掌握位图转矢量的开源神器
Potrace实战指南:5分钟掌握位图转矢量的开源神器 【免费下载链接】potrace [mirror] Tool for tracing a bitmap, which means, transforming a bitmap into a smooth, scalable image 项目地址: https://gitcode.com/gh_mirrors/pot/potrace 还在为位图放大…...
Beyond Compare 5本地化激活终极指南:三步实现专业文件对比工具永久使用
Beyond Compare 5本地化激活终极指南:三步实现专业文件对比工具永久使用 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen Beyond Compare作为专业的文件对比与合并工具,其…...
保姆级教程:用Materials Studio切(111)晶面并构建真空层,一步步教你分析晶体生长
从零开始掌握Materials Studio晶体表面建模:以(111)晶面为例的完整实战指南 在材料模拟与计算化学领域,精确构建晶体表面模型是研究催化反应、界面特性以及材料生长机制的基础环节。Materials Studio作为业界广泛采用的模拟平台,其表面建模功…...
基于RAG与模型微调构建个性化AI数字分身:从原理到实践
1. 项目概述:一个能模仿你的数字替身最近在AI圈里,一个名为richard3153/persona-mimic的项目引起了我的注意。光看名字,“Persona Mimic”——人格模仿,就足够让人浮想联翩了。这玩意儿到底是干嘛的?简单来说ÿ…...
OBS多路RTMP推流插件:一站式解决多平台同步直播难题
OBS多路RTMP推流插件:一站式解决多平台同步直播难题 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 还在为每次直播需要在不同平台间手动切换而烦恼吗?obs-multi…...
Nodejs后端服务接入Taotoken多模型API的完整配置指南
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Nodejs后端服务接入Taotoken多模型API的完整配置指南 对于Node.js后端开发者而言,将大模型能力集成到服务中已成为提升…...
