如题

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) 返回 time1time2 之间相差的秒数 (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时间相关推荐

  1. linux查看程序中最耗时的代码,【Linux】CPU时间与处理器耗时

    文章结构: CPU时间(CPU TIME)是指当应用进程启动后,占用CPU进行计算所进行的时间绝对值,或叫时间点.如果进程进入中断.挂起.休眠等行为时,是不占用CPU的,所以CPU时间并不会跟着增加, ...

  2. 如何在Windows 10的地图应用程序中获取离线地图

    If you know you're going to be using your PC in a location without an Internet connection, and you n ...

  3. 闪电博尔特100枪1000环夺冠,超人100枪10环垫底出局 程序中少了个大于号 覆盖结果

    闪电博尔特100枪1000环夺冠,超人100枪10环垫底出局 全球普及的体能测试让无数专业运动员无缘预赛,闪电博尔特和超人以优异成绩入选并兼射击比赛.两人均采取站立举枪5秒,瞬间移动至靶子,枪口抵靶心 ...

  4. 从程序中学习UKF-SLAM(一)

    然间从GitHub上发现一个小项目,做的是一个基于UKF的状态估计,使用C++版本的mathplot做显示,编译之后却发现显示一直有问题,于是萌生了一个想法:能不能把它移植到ROS中?然后就有了接下来 ...

  5. Canvas绘图在微信小程序中的应用:生成个性化海报

    Canvas绘图在微信小程序中的应用:生成个性化海报 如极客时间的一些实现案例: 基础语法 Canvas本质是一个可以使用脚本(通常为JavaScript)来绘制图形的 HTML 元素,默认大小为30 ...

  6. python缓存技术_高级Python技术:如何在Python应用程序中实现缓存

    缓存的重要性 缓存对于每个Python程序员来说都是一个需要理解的重要概念. 简而言之,缓存的概念主要是利用编程技术将数据存储在临时位置,而不是每次都从源检索数据. 随后,缓存可以提高应用程序的性能, ...

  7. LINUX类主机JAVA应用程序占用CPU、内存过高分析手段

    本文转载 线上应用故障排查之一:高CPU占用 DBA+社群(dbaplus)丁启良 1. 应用程序占用资源高问题 目前大部分应用程序采用的是JAVA语言开发,在产品上线使用一段时间后,经常会出现某个J ...

  8. 【ROS笔记本】ros::Rate loop_rate( ) loop_rate.sleep()

    ros::Rate是一个类 1 ros::Rate loop_rate( ) & loop_rate.sleep() 这两个函数必须一起使用,控制的是循环的频率,与消息或者服务的发布频率无直接 ...

  9. 【ROS进阶】常用函数——ros::ok(),ros::Rate,ros::spin()和ros::spinOnce()

    (一)ros::ok() 用于检查系统状态,适用于在while循环中判断状态 语法: while(ros::ok()) {//... } ros::ok()在以下几种情况下会返回false: 1.按下 ...

  10. 「技术架构」10个提升应用程序性能的倚天剑和屠龙刀

    提高web应用程序性能比以往任何时候都更加重要.在线经济活动的份额正在增长;超过5%的发达国家的经济现在是在互联网上的(参见参考资料中的互联网统计数据).而我们这个始终在线.高度连接的现代世界意味着用 ...

最新文章

  1. mipi屏在内核可以显示logo但是u-boot无法显示的问题【转】
  2. AAAI 2019 | 借鉴传染病学原理探索医学图像CNN可解释性
  3. cn101388899 一种web服务器前后台关联审计方法及系统,启明星辰数据库审计精确识别操作者...
  4. for-each 循环原理
  5. 周源:视频加密和DRM实施实践
  6. 从qq服务器删除误收邮件,如何恢复从qq邮箱删除的电子邮件
  7. java程序在centos7里面开机自启动
  8. python手机端编程环境_Python + Appium 环境搭建
  9. AndroidStudio安卓原生开发_Activity的IntentFlag的SINGLE_TOP_CLEAR_TOP_REORDER_TO_FRONT的用法---Android原生开发工作笔记90
  10. python用turtle画菱形_使用 Python Turtle 设计简单而又美丽的图形
  11. 设计模式之——单例模式(Singleton)的常见应用场景(转):
  12. 先装vs还是先装sql_止回阀该装在出口阀前还是阀后?
  13. LA4794 Sharing Chocolate
  14. golang解决TCP粘包问题
  15. 教你如何使用for循环来做一些小图案
  16. 夺命雷公狗----Git---2---基本用法
  17. Make sure that the latest NVIDIA driver is installed and running.
  18. oracle datafile损坏,Oracle某个数据文件损坏,如何打开数据_oracle
  19. mysql 日期截止,MySQL查询以开始日期和结束日期计算日期范围内的天数
  20. linux select函数返回值,socket中的select函数使用

热门文章

  1. 从SLAM到视觉识别、VIO,大牛分享!
  2. 体育专业国培计算机感言,信息技术国培感言
  3. Flash 实验 飞机爆炸
  4. Nim理论初探——编程之美1.12
  5. OSChina 端午节乱弹 ——用魔兽世界来祭奠青春
  6. linux加静态路由命令,LINUX添加静态路由
  7. 天涯海客邮件搜索群发大师 使用说明
  8. R语言绘制bivariate polar plots
  9. 第108章 属性关键字 - Required
  10. 某网站cookie加密黑盒调用与算法还原