栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++计算时间间隔

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++计算时间间隔

计算用时

运行代码时有时候会需要计算代码执行花费的时间,常用的方法有三种ros、chrono和time

一、使用ROS

ros中的ros::Time::now()可以提供当前时间,在代码首尾分别获取当前时间,相减后再转换格式即可以获取时间间隔。有两种时间单位,秒和纳秒(sec和nsec), 1nsec=1e-9sec。

#include 
#include "ros/ros.h"
using namespace std;
int main()
{
	double begin_time = ros::Time::now();
 	
	double end_time = ros::Time::now();
	std::cout << "时间间隔:" << (end_time - begin_time).toSec() << std::endl;
	std::cout << "时间间隔:" << (end_time - begin_time).toNSec() << std::endl;
}    

此方法在实际使用时,有些场景会出问题,在stage仿真时会出现时间静止的现象。

二、使用chrono库

chrono库中提供了steady_clock用于计算时间间隔,并且提供了多种时间单位:小时/分钟/秒/毫秒/微秒/纳秒(hours / minutes / seconds / milliseconds /microseconds / nanoseconds),需要不同单位更换变量即可。

单位变量与秒换算
小时hours1 : 3600
分钟minutes1 : 60
秒seconds1 : 1
毫秒milliseconds1000 : 1
微秒microseconds1e6 : 1
纳秒nanoseconds1e9 : 1

下面为用秒和微秒为单位计算时间间隔

//头文件
#include 


auto start = std::chrono::steady_clock::now();

auto end = std::chrono::steady_clock::now();
std::cout<<" 时间间隔: "<(end - start).count()<<" s"<(end - start).count()<<" μs"< 
三、time库 

time.h库里提供了结构体timeval 用于获取时间,计算时间间隔与上面两种方法一样,首尾时间相减即可获得时间间隔。

struct timeval  
{  
__time_t tv_sec;          
__suseconds_t tv_usec;    
}; 

计算时间间隔

struct timeval begin,end;
unsigned long long timeconsumed = 0;
gettimeofday(&begin,NULL);

gettimeofday(&end,NULL);
//以秒为单位
timeconsumed = begin.tv_sec-end.tv_sec +(begin.tv_usev-end.tv_usec)/1000000;
std::cout<<" 时间间隔: "<
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1022439.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号