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) 返回 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的输出

 

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值