获取秒、毫秒、微秒、纳秒时间差的方法

Windows下C++获取毫秒级时间的3种方法对比(含GetTickCount64和chrono库) 本文深入对比了Windows平台下C++获取毫秒级时间的三种核心方法:传统的C标准库`time()`函数、Windows API `GetTickCount64()`以及现代C++11的`std::chrono`库。重点分析了各自的精度、单调性、跨平台性及适用场景,并指出对于高精度、跨平台的性能测量和游戏循环,基于`steady_clock`的`chrono`库是首选方案。 阅读详情

一、获得精度秒级时间差

        time() 是指返回自 Unix 纪元(January 1 1970 00:00:00 GMT)起的当前时间的秒数的函数

time_t tStart = time(NULL);
Sleep(1000);
time_t tStop = time(NULL);
long nElapsed = tStop - tStart ;

二、获得精度毫秒级时间差

        精度到毫秒级的时间获取,也是比较常用的,有两种,如下:

2.1clock

        clock返回从自身进程启动所经过(elapsed)的毫秒数

​clock_t tStart = clock();
Sleep(1000);
clock_t tStop = clock();
long nElapsed = tStop - tStart ;

2.2GetTickCount

        GetTickCount返回(retrieve)从操作系统启动所经过(elapsed)的毫秒数

​​clock_t tStart = GetTickCount();
Sleep(1000);
clock_t tStop = GetTickCount();
long nElapsed = tStop - tStart ;​

三、获得精度微秒级时间差

 3.1gettimeofday

        gettimeofday函数,是使用C语言编写程序需要获得当前精确时间(1970年1月1日到现在的时间)

 struct timeval tStart, tStop;
 gettimeofday(&tStart, NULL);
 Sleep(1000);
 gettimeofday(&tStop, NULL);
 long elapsed = (tStop.tv_sec - tStart.tv_sec) * 1000000 + (tStop.tv_usec - tStart.tv_usec);

 3.2QueryPerformanceCounter

        QueryPerformanceCounter函数能返回CPU工作到当前的滴答个数,而QueryPerformanceFrequency是CPU的频率。滴答数除以频率为时间:秒,所以,先给时间*1000000得到的时间精度为微秒。

LARGE_INTEGER nFrequence, tStart, tStop;
WINBOOL ret;
//返回性能计数器每秒滴答的个数, 有的CPU不支持,此函数将返回0
ret = QueryPerformanceFrequency(&nFrequence);
if(ret) {
    ret = QueryPerformanceCounter(&tStart);
}
Sleep(1000);
if(ret) {
    QueryPerformanceCounter(&tStop);
}
if(ret) {
    LONGLONG elapsed = (tStop.QuadPart - tStart.QuadPart) * 1000000 / nFrequence.QuadPart;
}

计算任何两个时刻的时间差(精确到毫秒) #include<stdio.h> #include<stdlib.h> #include<time.h> struct t { int year; int mon; int mday; int hour; int min; int sec; int ms; } t1, t0; // 计算两个日历的时间差,精确到毫秒 double mydifftime(struct t t1, struct t t0) { time_t time1, tim 阅读详情

相关推荐

程序员必知的时间单位换算:从秒到纳秒的实战指南

时间单位换算是计算机科学和软件工程中的基础概念,涉及秒、毫秒、微秒、纳秒等不同精度单位的转换。其核心原理基于国际单位制,通过固定的换算比率(如1000倍或60倍)在不同精度级别间转换。掌握这一原理对于编写健壮、高效的代码至关重要,能有效避免因单位混淆导致的隐蔽Bug,如定时任务异常、接口超时错误和数据库查询错乱等。在实际应用中,这一技术广泛应用于系统监控、性能分析、API接口设计以及分布式系统协调等场景。本文聚焦于**时间单位换算**这一关键点,通过**Java的TimeUnit枚举**等实用工具,为开发者

weixin_30588675的博客 360

C语言time取毫秒,C++ 时间操作(获取毫秒级)

//使用标准C语言的time函数,可以满足一般性需要#include#includeint main( void ){time_t t = time( 0 );char tmp[64];strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年第%j天 %z",localtime(&t) );puts( tmp );return 0;}//GetLocal...

weixin_42364609的博客 7284

C/C++获取(毫秒/微秒/纳秒级)系统时间差方法大全

总结了常用的四种方法。包括: 方法一 利用 SYSTEMTIME 方法二 利用 GetTickCount()函数 方法三 使用clock()函数 方法四 获取高精度时间差 个人感觉还是很清晰明了的。希望对大家有用。

time_t tm timeval 的区别

time_t tm timeval

michaelysj的专栏 2270

数据助力行业发展:BJTU-RAO转向架数据集介绍

BJTU-RAO转向架数据集是完全公开的,何研究人员皆可以通过后文的下载链接免费下载数据,且在标注数据来源的前提下,研究人员可以自由使用BJTU-RAO转向架数据集。因此,聚焦各类列车转向架传动系统在途安全保障新技术研究和新算法开发,实现牵引电机、驱动齿轮箱和轴箱等关键部件的实时状态监测与智能故障诊断,对保障列车安全可靠运行具有重要的现实意义。BJTU-RAO转向架数据集包含51种健康状态的样本,涵盖正常状态、部件级单一故障、部件级复合故障以及系统级关联复合故障,数据量达116GB。

2401_88870554的博客 3497

百度API实现人流量数量检测(动态)

百度的这个API还挺好用的,对与不追求高精度的人来说非常适用,结合他官方给的文档,极易上手。 需要做的就是通过API Key和Secret Key获取的access_token。 然后稍微修改下代码就行,但是他给的代码并没有直接从摄像头获取视频,而是读取一个文件夹,那么就需要自己先对摄像头的输出视频进行处理。 识别结果如下,"person_num"是当前画面的人数,in是累计进入的人数,out是累计走出去的人数。 他这个有个缺点就是返回值里边并没有实时返回in和out的值,而是都是0,但是这个图片上有,图片

qq_42479987的博客 3379

Linux 下c获取当前时间(精确到秒和毫秒或者微秒)

转发:https://blog.youkuaiyun.com/deyuzhi/article/details/51814934 获取当前的时间的秒数和微秒数本方法需要用到gettimeofday()函数,该函数需要引入的头文件是 sys/time.h 。 函数说明int gettimeofday (struct timeval * tv, struct timezone * tz) 1、返回值:该函数成功时返...

Little rookie 2万+

视频监控设备(NVR、IPC等)如何通过国标GB28181接入到视频监控平台,以及接入过程如何测试视频接入是否成功

GB/T28181标准广泛的应用,视频监控设备通过国标GB28181接入视频监控平台的过程变成程序化、标准化的互联过程,确保了视频监控设备能够在不同系统、不同网络环境下实现远程、跨区域、跨级别的访问和控制。版本有GB28181-2011、2016、2022几个常用版本,威迪斯特的视频监控平台完全支持GB28181的这几个版本,能够实现不同品牌视频监控设备的国标视频接入(国标视频监控接入),或者为国标28181视频接入(国标28181视频监控接入),也为国标281818接入(国标GB/T28181接入。

weixin_70208651的博客 1万+

计算耗时为微秒的方法(包含:时/分/秒/毫秒/微秒/纳秒)

在这个示例中,我们使用了一个for循环,计算从0到99999999的所有整数的总和。在上面的代码中,我们使用了Qt的QTime类来计算代码执行时间。函数来获取代码块的执行时间,单位为纳秒,将其除以1000转换为微秒。类来获取当前时间,然后计算执行时间,最后输出结果。是C++标准库提供的一个高精度时钟,可以在微秒级别上测量时间。分别记录了需要计时代码的开始和结束时间,计算出时间差之后再通过。方法可以获取毫秒级别的时间差,然后可以将其转换为微秒级别。开始计时,然后运行需要计时的代码,最后使用。

weixin_56819992的博客 2614

WinCC动态选择报警记录案例

本例中需要确认查询的时间段以及查询的关键字,然后通过一个按钮来执行报警数据查询脚本,并把查询出的结果加载到当前报警控件中。<本例中数据查询脚本的思路是根据选项组所选定的参数加载相应的归档变量到在线趋势控件,根据设定的查询时间范围设定控件时间轴的开始时间及结束时间。本文以 WinCC V8.0为例,介绍如何动态的查询WinCC报警记录,包括关键字查询/时间&关键字查询,如图1所示。<在WinCC变量管理中创建不同的变量组,并在变量组下创建相应的变量,如图2 所示(下图并非实际变量值)。

weixin_45072604的博客 2708

第一章:信号链的精度之战:深入解决电流采样偏差

摘要:本文深入探讨了FOC控制中电流采样偏差问题及其解决方案。电流采样偏差主要来源于偏移误差、增益误差、非线性误差和温漂四大类,其中偏移误差对FOC性能影响最为严重。硬件方面建议采用高精度采样电阻、低失调运放和独立基准电压等设计;软件层面提出了上电自动零点校准、在线实时补偿和模型闭环补偿三种策略。最后介绍了量产自动化校准系统,通过硬件优化和软件补偿相结合,确保每台产品电流采样精度的一致性,为FOC控制奠定坚实基础。

汽车软件开发 602

C/C++获取系统时间差方法大全

C/C++获取系统时间差方法大全 去发现同类优质开源项目:https://gitcode.com/ 本文总结了在C/C++中获取系统时间差的四种常用方法,涵盖了毫秒、微秒和纳秒级别的精度。每种方法都有详细的说明和示例代码,帮助开发者根据需求选择合适的方法。 方法一:利用 SYSTEMTIME SYSTEMTIME 是Windows API中用于表示日期和时间的结构体。通过获取两个时间点的 SYST...

gitblog_06681的博客 539

基于Python的MOOC课程评价爬取与分析系统设计与实现

本文详细介绍了如何使用Python最新技术栈构建一个高效的MOOC课程评价爬取与分析系统。系统采用Scrapy框架结合Selenium实现动态页面抓取,利用PyMySQL进行数据存储,并通过Pandas和Matplotlib实现数据可视化分析。文章从爬虫原理、技术选型、系统设计到代码实现进行全面讲解,为教育工作者改进教学质量提供数据支持。关键词:Python爬虫、MOOC评价分析、Scrapy框架、数据可视化、教学改进。

2201_76125261的博客 1103

c linux time微秒_Linux 下c获取当前时间(精确到秒和毫秒或者微秒)

获取当前的时间的秒数和微秒数本方法需要用到gettimeofday()函数,该函数需要引入的头文件是 sys/time.h 。函数说明int gettimeofday (struct timeval * tv, struct timezone * tz)1、返回值:该函数成功时返回0,失败时返回-12、参数struct timeval{long tv_sec; //秒long tv_usec; /...

weixin_40001025的博客 361

使用 MATLAB/Simulink + Simscape Electrical,构建一个含光伏并网系统与SVG的联合仿真模型,实现动态无功补偿与电压支撑

摘要:本文详细介绍了基于Simulink的SVG与光伏并网逆变器联合系统建模方法。通过构建包含光伏单元、SVG主电路和控制模块的仿真模型,实现动态无功补偿与电压稳定。重点阐述了ip-iq无功检测算法、双闭环控制和SVPWM调制等关键技术。仿真结果表明,该系统能快速响应无功需求,在10ms内将功率因数提升至0.98以上,有效抑制电压波动。文章为新能源并网系统中的电能质量治理提供了实用解决方案,并提出了进一步优化方向。

xiaoheshang_123的博客 322

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

linux毫秒时间差计算,shell脚本示例:计算毫秒级、微秒级时间差

有时候需要计算命令的执行时间长度,可以使用time命令,虽然time命令可以精确到毫秒级,但time命令无法计算一堆命令的执行时间。可以也可以直接使用date命令计算命令执行前后的时间差,但直接使用date命令计算时间差只能精确到秒级。因此,要计算毫秒级或者微秒级的时间长度,需要对date命令的结果进行一番计算转换。本文只给出了毫秒级时间差的计算方法,若要计算微秒级时间差,对脚本稍作修改即可。脚本...

weixin_35418139的博客 1613

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

从毫秒到纳秒:一文讲透tryLock中时间单位转换的正确姿势

掌握Lock tryLock的时间单位转换技巧,精准避免线程阻塞问题。详解毫秒到纳秒的换算方法,适用于高并发场景下的锁控制,确保超时设置准确无误。理解TimeUnit枚举的正确用法,提升代码健壮性与可读性,值得收藏。

LiteCode的博客 573

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

推荐开源项目:C/C++获取系统时间差方法大全

推荐开源项目:C/C++获取系统时间差方法大全 去发现同类优质开源项目:https://gitcode.com/ 在软件开发过程中,精确的时间测量对于性能分析、调试和优化至关重要。今天,我们为大家推荐一个实用的开源项目——C/C++获取系统时间差方法大全,该项目总结了在C/C++中获取系统时间差的四种常用方法,涵盖了毫秒、微秒和纳秒级别的精度。每种方法都有详细的说明和示例代码,帮助开发者根据需求选...

gitblog_06620的博客 745

C++11之计算程序运行耗时毫秒/微妙/纳秒(二百八十六)

本篇目的:C++之计算程序运行耗时是 C++11 标准库中命名空间下的一个时钟类型,它提供了一种测量短时间间隔的高分辨率时钟。这个时钟旨在提供当前时间的点(time_point)和持续时间(duration),并且能够以高精确度测量两个时间点之间的差异。以下是高分辨率:它通常提供比标准系统时钟更高的分辨率,适合测量短时间的耗时,比如函数执行时间或程序中某个操作的持续时间。单调性是单调的,这意味着即使系统时间发生变化(如通过NTP调整),它仍然保证时间点的值不会减少,这对于性能测量非常重要。硬件相关。

Android系统攻城狮 1236

linux 打印微秒时间,Linux 下c獲取當前時間(精確到秒和毫秒或者微秒)

獲取當前的時間的秒數和微秒數本方法需要用到gettimeofday()函數,該函數需要引入的頭文件是 sys/time.h 。函數說明int gettimeofday (struct timeval * tv, struct timezone * tz)1、返回值:該函數成功時返回0,失敗時返回-12、參數struct timeval{long tv_sec; //秒long tv_usec; /...

weixin_28932089的博客 759
上一篇: Halcon中同步与异步采集的理解
MingoJiang
博客等级 码龄14年 161粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MingoJiang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值