ros::Rate loop_rate(10); loop_rate.sleep(); 在程序中是休眠到一定时间,并不占用CPU时间
如题
ros::Rate loop_rate(10);
loop_rate.sleep();
在ROS C++ 编写订阅者等功能包时,会用到以上两个函数
经过本人测试和查询,sleep()函数并不占用CPU时间,故如果想用定时器来记录程序执行时间,并不会把休眠的时间加进去(休眠其实就是不占用CPU时间的意思).
实际上,执行sleep()函数,只会占用CPU时间调用一条语句的时间.
如果想记录程序的总的运行时间(而不是占用CPU的时间),可以通过C 库函数 - time()来获取当前时间(C 库函数 time_t time(time_t *seconds) 返回自纪元 Epoch(1970-01-01 00:00:00 UTC)起经过的时间,以秒为单位。如果 seconds 不为空,则返回值也存储在变量 seconds 中)
用C 库函数 double difftime(time_t time1, time_t time2) 返回 time1 和 time2 之间相差的秒数 (time1 - time2)。这两个时间是在日历时间中指定的,表示了自纪元 Epoch(协调世界时 UTC:1970-01-01 00:00:00)起经过的时间。
time_t start_t, end_t; double diff_t;
time(&start_t);
loop_rate.sleep();
time(&end_t);
diff_t = difftime(end_t, start_t);
cout << "diff_t = " << diff_t <<endl;
注意,应当把loop_rate(10) 改为loop_rate(1),这样就可以看到diff_t = 1的输出
ros::Rate loop_rate(10); loop_rate.sleep(); 在程序中是休眠到一定时间,并不占用CPU时间相关推荐
- linux查看程序中最耗时的代码,【Linux】CPU时间与处理器耗时
文章结构: CPU时间(CPU TIME)是指当应用进程启动后,占用CPU进行计算所进行的时间绝对值,或叫时间点.如果进程进入中断.挂起.休眠等行为时,是不占用CPU的,所以CPU时间并不会跟着增加, ...
- 如何在Windows 10的地图应用程序中获取离线地图
If you know you're going to be using your PC in a location without an Internet connection, and you n ...
- 闪电博尔特100枪1000环夺冠,超人100枪10环垫底出局 程序中少了个大于号 覆盖结果
闪电博尔特100枪1000环夺冠,超人100枪10环垫底出局 全球普及的体能测试让无数专业运动员无缘预赛,闪电博尔特和超人以优异成绩入选并兼射击比赛.两人均采取站立举枪5秒,瞬间移动至靶子,枪口抵靶心 ...
- 从程序中学习UKF-SLAM(一)
然间从GitHub上发现一个小项目,做的是一个基于UKF的状态估计,使用C++版本的mathplot做显示,编译之后却发现显示一直有问题,于是萌生了一个想法:能不能把它移植到ROS中?然后就有了接下来 ...
- Canvas绘图在微信小程序中的应用:生成个性化海报
Canvas绘图在微信小程序中的应用:生成个性化海报 如极客时间的一些实现案例: 基础语法 Canvas本质是一个可以使用脚本(通常为JavaScript)来绘制图形的 HTML 元素,默认大小为30 ...
- python缓存技术_高级Python技术:如何在Python应用程序中实现缓存
缓存的重要性 缓存对于每个Python程序员来说都是一个需要理解的重要概念. 简而言之,缓存的概念主要是利用编程技术将数据存储在临时位置,而不是每次都从源检索数据. 随后,缓存可以提高应用程序的性能, ...
- LINUX类主机JAVA应用程序占用CPU、内存过高分析手段
本文转载 线上应用故障排查之一:高CPU占用 DBA+社群(dbaplus)丁启良 1. 应用程序占用资源高问题 目前大部分应用程序采用的是JAVA语言开发,在产品上线使用一段时间后,经常会出现某个J ...
- 【ROS笔记本】ros::Rate loop_rate( ) loop_rate.sleep()
ros::Rate是一个类 1 ros::Rate loop_rate( ) & loop_rate.sleep() 这两个函数必须一起使用,控制的是循环的频率,与消息或者服务的发布频率无直接 ...
- 【ROS进阶】常用函数——ros::ok(),ros::Rate,ros::spin()和ros::spinOnce()
(一)ros::ok() 用于检查系统状态,适用于在while循环中判断状态 语法: while(ros::ok()) {//... } ros::ok()在以下几种情况下会返回false: 1.按下 ...
- 「技术架构」10个提升应用程序性能的倚天剑和屠龙刀
提高web应用程序性能比以往任何时候都更加重要.在线经济活动的份额正在增长;超过5%的发达国家的经济现在是在互联网上的(参见参考资料中的互联网统计数据).而我们这个始终在线.高度连接的现代世界意味着用 ...
最新文章
- mipi屏在内核可以显示logo但是u-boot无法显示的问题【转】
- AAAI 2019 | 借鉴传染病学原理探索医学图像CNN可解释性
- cn101388899 一种web服务器前后台关联审计方法及系统,启明星辰数据库审计精确识别操作者...
- for-each 循环原理
- 周源:视频加密和DRM实施实践
- 从qq服务器删除误收邮件,如何恢复从qq邮箱删除的电子邮件
- java程序在centos7里面开机自启动
- python手机端编程环境_Python + Appium 环境搭建
- AndroidStudio安卓原生开发_Activity的IntentFlag的SINGLE_TOP_CLEAR_TOP_REORDER_TO_FRONT的用法---Android原生开发工作笔记90
- python用turtle画菱形_使用 Python Turtle 设计简单而又美丽的图形
- 设计模式之——单例模式(Singleton)的常见应用场景(转):
- 先装vs还是先装sql_止回阀该装在出口阀前还是阀后?
- LA4794 Sharing Chocolate
- golang解决TCP粘包问题
- 教你如何使用for循环来做一些小图案
- 夺命雷公狗----Git---2---基本用法
- Make sure that the latest NVIDIA driver is installed and running.
- oracle datafile损坏,Oracle某个数据文件损坏,如何打开数据_oracle
- mysql 日期截止,MySQL查询以开始日期和结束日期计算日期范围内的天数
- linux select函数返回值,socket中的select函数使用