当前位置: 首页 > news >正文

C++代码优化

前段时间写了一些代码,但是在运算过程中发现有些代码可以进行改进以提高运行效率,尤其是与PCL相关的部分,可以进行大幅度提高.特意在此进行记录,分享给大家,也供自己查看.

pcl::PointCloud< T >点云的加法

比如我有两个clusters,每个clusters都包括points_这个成员,类型为:

pcl::PointCloud<PointInfoType> points_;

我想要把两个clusters的points_成员加在一起,PCL是支持点云的加法的,如下所示.

cluster1.points_ = cluster1.points_ + cluster2.points_;

但是这样会很慢,我们可以通过逐点的push_back来替换,如下所示.

    // update the cluster pointsfor(int i=0; i<cluster2.points_.size(); i++){cluster1.points_.push_back(cluster2.points_[i]);}

提前分配空间

比如,我们想对点云进行一个体素下采样,每个体素中保留一个点且已知体素的数量,那么我们可以提前分配给点云变量对应大小.这样在填充过程中就不用系统每次内部进行扩充,大大加快处理速度.
如下述代码中,提前为pl_feat分配了num_voxels大小,后续使用emplace_back函数,逐个添加点.

    pl_feat.clear();pl_feat.points.reserve(num_voxels);  // 提前分配内存for (const auto& voxel : voxel_map){// pl_feat.points.push_back(voxel.second.points_[0]);pl_feat.points.emplace_back(voxel.second.points_[0]);}pl_feat.width = pl_feat.points.size();pl_feat.height = 1;pl_feat.is_dense = true;

类似的,在构建voxelmap的时候也提前分配好一个比较大的空间,这样在向voxel_map中添加点云时就会大大加快速度.

std::unordered_map<UNI_VOXEL_LOC, M_POINT> voxel_map;
voxel_map.reserve(50000000);

在实时运行中kdtree最好只构建一次

在面对大量点云,或者说点云在逐渐增加时,最好只对点云构建一次kdtree或者说尽量降低构建kdtree的次数,或者更换其他数据结构,比如ikdtree来解决问题.
pcl中自带的kdtree构建难以处理大量点云,会非常耗时

// build a kd tree
pcl::KdTreeFLANN<pcl::PointXY> kdtree2d;
kdtree2d.setInputCloud(gnd_data2d);

先写到这里,后续有了再记录

相关文章:

  • 若依同步企业微信架构及ACTIVITI
  • 【VSCode】在 VSCode 中运行 HTML 页面并通过 HTTPS 访问
  • linux查看及修改用户过期时间
  • 【Java面试系列】Spring Boot微服务架构下的分布式事务设计与实现详解 - 3-5年Java开发必备知识
  • 【多线程-第四天-SDWebImage的常见面试题-进一步解读SDWebImage的源代码 Objective-C语言】
  • 使用Docker搭建开源Email服务器
  • stl 容器 – map
  • DDoS防御发展史
  • 7.Rust+Axum:打造高效 RESTful API 的最佳实践
  • Python中type()函数的深度探索:类型检查与动态类创建
  • 吴恩达强化学习复盘(1)聚类算法|K-Means算法
  • 解决jupyter notebook修改路径下没有c.NotebookApp.notebook_dir【建议收藏】
  • js实现的前端水印
  • 人工智能代理重塑数字成功:为何面向机器的营销是下一前沿
  • OOM 未触发 JVM 崩溃的可能原因
  • 如何-批量修改文件夹的命名
  • FPGA-VGA
  • Android——动画
  • Node.js 异步调用淘宝 API 实践:高吞吐商品详情数据采集方案
  • 双层Key缓存
  • “站在亚洲实现整体振兴的新起点上”——习近平主席对越南、马来西亚、柬埔寨进行国事访问纪实
  • 市民建议公交广播增加“请勿大声喧哗”提示,上海交通委回复
  • 一中国公民在日本滑雪场意外死亡,我领馆发布提醒
  • 行拘!如此引流诱导违法犯罪不该被纵容
  • 谁在地铁里阅读?——对话上海地铁上的读书人
  • 变局中,上海浦东何以继续引领?