当前位置: 首页 > news >正文

Android常用C++特性之std::chrono

声明:本文内容生成自ChatGPT,目的是为方便大家了解学习作为引用到作者的其他文章中。

std::chrono 是 C++11 引入的标准库中的时间处理工具,提供了以多种精度进行时间测量、处理和操作的功能。它允许开发者处理时间点(time_point)和时间间隔(duration),并且支持从高精度(如纳秒)到较大单位(如秒、分钟)的转换。

主要组件

std::chrono 主要由以下几个组件组成:

  1. 时间点 (time_point):表示一个特定的时间。
  2. 时间间隔 (duration):表示两个时间点之间的差异。
  3. 时钟 (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_clockstd::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 提供了三种常用的时钟类型,用于获取当前时间点:

  1. std::chrono::system_clock:表示系统时间,通常用于获取当前的时间和日期。
  2. std::chrono::steady_clock:表示单调递增的时钟,适用于计算时间间隔,不会被系统时间调整所影响。
  3. std::chrono::high_resolution_clock:表示高精度的时钟,是 steady_clocksystem_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(&current_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_clockhigh_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_clocksteady_clockhigh_resolution_clock
  • 提供精确的时间测量和单位转换功能。

相关文章:

Android常用C++特性之std::chrono

声明&#xff1a;本文内容生成自ChatGPT&#xff0c;目的是为方便大家了解学习作为引用到作者的其他文章中。 std::chrono 是 C11 引入的标准库中的时间处理工具&#xff0c;提供了以多种精度进行时间测量、处理和操作的功能。它允许开发者处理时间点&#xff08;time_point&am…...

[Oracle] ORA-04036: 实例使用的 PGA 内存超出 PGA_AGGREGATE_LIMIT

有说该问题是因为触发了Oracle的BUG导致&#xff0c;最直接的解决方法就是重启数据库实例&#xff1b; Linux下数据库实例重启...

一次 Spring 扫描 @Component 注解修饰的类坑

问题现象 之前遇到过一个问题&#xff0c;在一个微服务的目录下有相同功能 jar 包的两个不同的版本&#xff0c;其中一个版本里面的类有 Component 注解&#xff0c;另外一个版本的类里面没有 Component 注解&#xff0c;且按照加载的顺序&#xff0c;没有 Component 注解的 j…...

深度学习:调整学习率

目录 前言 一、什么是调整学习率&#xff1f; 二、调整学习率的作用 三、怎么调整学习率 1.有序调整 2.自适应调整 3.自定义调整 4.调整示例 前言 在深度学习中&#xff0c;调整学习率是非常重要的&#xff0c;它对模型的训练效果和收敛速度有显著影响。 一、什么是调整…...

Java项目实战II基于Java+Spring Boot+MySQL的厨艺交流平台设计与实现(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在美食文化…...

第二十节:学习Redis缓存数据库实现增删改查(自学Spring boot 3.x的第五天)

这节记录下如何使用redis缓存数据库。 第一步&#xff1a; 先在服务器端安装redis&#xff0c; 下载地址&#xff1a;Releases tporadowski/redis GitHub。 第二步&#xff1a; 安装redis客户端可视化管理软件redisDesktopmanager Redis Desktop Manager - Download 第…...

Android SQLite的基本使用、生成Excel文件保存到本地

1. Android SQLite的基本使用 1.1. SQLiteOpenHelper Android 底层已经通过一个SQLiteOpenHelper的抽象类将数据库的创建&#xff0c;以及修改&#xff0c;更新等都放在了里面。 要使用它必须实现它的OnCreate(SQLiteDatabase db)&#xff0c;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 提出后&#xff0c;卷积神经网络在计算机视觉和机器学习领域中很有名气&#xff0c;但并未起到主导作用。 这是因为 LeNet 在更大、更真实的数据集上训练的性能和可行性还有待研究。 事实上&#xff0c;在 20 世纪 90 年代到 2012 年之间的大部分时间里&#xff0c;…...

C语言扫盲

文章目录 C版本C语言特征GCCprintf数据类型函数指针内存管理void指针 Struct结构和Union结构typedef预处理器make工具cmake工具Projectintegral of sinc functionemulator embedded systeman event schedule 补充在线Linux终端安装Linux参考 建议还是国外教材学习…人家的PPT比…...

视频融合共享平台LntonAIServer视频智能分析抖动检测算法和过亮过暗检测算法

LntonAIServer作为一款智能视频监控平台&#xff0c;集成了多种先进的视频质量诊断功能&#xff0c;其中包括抖动检测和过暗检测算法。这些算法对于提升视频监控系统的稳定性和图像质量具有重要意义。 以下是对抖动检测算法和过暗检测算法的应用场景及优势的详细介绍。 一、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看图

本节重点介绍 : 打镜像&#xff0c;导出镜像&#xff0c;传输到各个节点并导入运行该项目配置prometheus和grafana 打镜像 本地build docker build -t ink8s-pod-metrics:v1 .build过程 导出镜像 docker save ink8s-pod-metrics > ink8s-pod-metrics.tar 传输到各个node…...

如何让系统u盘重新可用

目录 引言开始操作遇到的错误 引言 我们将 u 盘制作为系统 U 盘后&#xff0c;U 盘就没法在电脑中正常识别出了。当装完系统&#xff0c;不再需要 u 盘充当系统 U 盘想要正常使用该 U 盘&#xff0c;这时候就需要有些操作&#xff0c;让这个 U 盘正常化。 上图就是充当系统盘的…...

14.安卓逆向-frida基础-编写hook脚本2

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;图灵Python学院 本人写的内容纯属胡编乱造&#xff0c;全都是合成造假&#xff0c;仅仅只是为了娱乐&#xff0c;请不要盲目相信。 工…...

车辆零部件检测和分割数据集-车体数据集-yolo格式-yolov5-yolov10可用

这些标签是用于实例分割任务中的类别&#xff0c;通常在汽车图像识别或自动驾驶技术中使用。以下是这些类别&#xff1a; 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 全局环境依赖混淆&#xff1a;1.2 工具和项目之间的冲突&#xff1a;1.3 缺乏依赖隔离&#xff1a;1.4 多出很多额外依赖&#xff1a; 2. 不推荐pipx安装3. poetry高级安装3.1 默认安装路径3.2自定义安装 4. 安装p…...

Proteus如何添加数码管

1、打开安装好的Proteus&#xff0c;点击上方菜单栏中的“库”&#xff0c;再选择“从库选取零件”&#xff0c;或者在左侧元件列表中单击鼠标右键&#xff0c;再点击右键菜单中的“从库中挑选”选项。 2、之后在元器件库中&#xff0c;点击类别中的“Optoelectronics”&#…...

SMUDebugTool终极指南:快速掌握AMD Ryzen系统调试与优化技巧

SMUDebugTool终极指南&#xff1a;快速掌握AMD Ryzen系统调试与优化技巧 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: http…...

GLM-4v-9b行业落地:跨境电商商品图多语言描述生成自动化方案

GLM-4v-9b行业落地&#xff1a;跨境电商商品图多语言描述生成自动化方案 1. 引言&#xff1a;跨境电商卖家的共同痛点 如果你是做跨境电商的&#xff0c;下面这个场景你一定不陌生&#xff1a;仓库里堆满了新品&#xff0c;运营同事催着要上架&#xff0c;但每个商品都需要准…...

破局 AIGC 检测重围:PaperXie 如何让论文从 “机器量产“ 回归 “学术原创“——3000 字深度解构双效降重新范式

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AIPPThttps://www.paperxie.cn/weight?type1https://www.paperxie.cn/weight?type1 引言&#xff1a;当学术写作撞上 AIGC 检测&#xff0c;毕业与投稿的双重困局凌晨两点的图书馆&#xff0c;屏幕上刺眼…...

告别龟速下载!一个Shell脚本搞定GFZ非潮汐大气负载数据(附站点坐标文件模板)

极速批量获取GFZ非潮汐大气负载数据的Shell脚本实战指南 在GNSS数据处理和地球物理研究中&#xff0c;获取高精度的非潮汐大气负载(NTAL)数据是分析站点位移的关键环节。德国地学研究中心(GFZ)作为全球权威机构&#xff0c;其提供的NTAL数据产品被广泛应用于科研和工程领域。然…...

Electron打包踩坑实录:从icon报错到网络卡顿,手把手教你用electron-builder搞定Windows安装包

Electron实战打包指南&#xff1a;从图标优化到网络加速的全流程解决方案 Electron作为跨平台桌面应用开发框架&#xff0c;其打包环节往往是开发者遇到问题最集中的阶段。本文将系统梳理从基础配置到高级优化的完整打包流程&#xff0c;特别针对Windows平台下electron-builde…...

通义千问3-VL-Reranker-8B新手教程:零基础学会混合检索排序

通义千问3-VL-Reranker-8B新手教程&#xff1a;零基础学会混合检索排序 1. 认识这个强大的多模态排序工具 想象一下&#xff0c;你正在管理一个包含文字、图片和视频的庞大数据库。当用户搜索"户外运动装备"时&#xff0c;系统返回了100个结果——有些是产品描述文…...

旧笔记本别扔!用飞牛OS+阿里云DDNS,5分钟搞定个人云盘外网访问

旧笔记本改造指南&#xff1a;用飞牛OS与阿里云DDNS打造高性价比个人云存储 你是否曾为家中堆积的旧电子设备感到困扰&#xff1f;那些性能落后但依然能正常运行的旧笔记本&#xff0c;其实蕴藏着巨大的实用价值。本文将带你探索如何将这些被时代淘汰的硬件变废为宝&#xff0c…...

小白友好!MedGemma X-Ray完整使用流程:上传、提问、获取报告

小白友好&#xff01;MedGemma X-Ray完整使用流程&#xff1a;上传、提问、获取报告 你是不是也遇到过这样的情况&#xff1f;拿到一张胸部X光片&#xff0c;看着上面复杂的骨骼、肺纹理和阴影&#xff0c;感觉无从下手&#xff0c;不知道哪些是正常的&#xff0c;哪些是需要关…...

Pixel Mind Decoder 效果对比视频:同一段文本在不同模型下的情绪解析差异

Pixel Mind Decoder 效果对比视频&#xff1a;同一段文本在不同模型下的情绪解析差异 1. 情绪解析技术的新突破 在自然语言处理领域&#xff0c;情绪识别一直是个充满挑战的任务。传统模型往往只能识别基本的喜怒哀乐&#xff0c;而人类情绪实际上要复杂得多。Pixel Mind Dec…...

QT实战:用QScrollArea+QListWidget复刻迅雷设置界面(附完整源码)

QT实战&#xff1a;用QScrollAreaQListWidget复刻迅雷设置界面&#xff08;附完整源码&#xff09; 在桌面应用开发中&#xff0c;设置界面的设计往往考验着开发者对布局和交互逻辑的掌控能力。迅雷作为一款经典的下载工具&#xff0c;其设置界面以清晰的导航结构和流畅的滚动体…...