当前位置: 首页 > 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”&#…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...