cmake添加pcl库后导致程序变慢之编译参数-ffloat-store

5 篇文章 1 订阅

项目场景:

需要引用pcl库中的平面拟合功能,项目用cmake构建,平台是在jetson nano上,自带系统是一个ubuntu18.04的阉割版本。


问题描述

其实自己也实现了平面拟合算法,在设计代码的时候是把这部分算法做成接口的,也就是带PCL和不带PCL都可以编译,运行。然后奇怪的问题就来了,不带PCL算法耗时70ms左右,带上PCL算法耗时95ms,问题是平面拟合那一部分调用频率很低,耗时几乎是可以忽略不计的,平白无故增加的25ms非常不合理。


原因分析:

1.考虑是不是PCL库编译的问题,比如编译成Debug了?

由于本身代码使用的是pcl 1.11.1,jetson nano自带的是pcl1.8,为了保持一致我是自己编译了pcl(后面准备整理下交叉编译PCL的教程)。有可能忘记选Release了?然而再三确认,我又编译了一遍,发现不是这个问题,确定就是Release。

2.考虑是导入PCL库的时候带了某些编译设置

打印 CMAKE_CXX_FLGAS_RELEASE 只有O3 NDEBUG两个选项。抱着试一试的心态,make VERBOSE=on,然后对比了带PCL和不带PCL的编译参数,发现了一个符号 -ffloat-store,网上查了一下,浮点数使用前都会存到存储器中,直觉上就是这个原因。由于不知道CMake怎么去掉这个标记,手动在CMakefiles里面改了flags.cmake,把这个标记去掉然后make,果然恢复正常了。


解决方案:

  1. make VERBOSE=on 对比编译参数
  2. CMakeFiles中手动修改flags.cmake,去掉-ffloat-store
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值