嵌入式代码优化技巧

内存管理技巧

1.C/C++工程应尽量避免深拷贝,尽量用浅拷贝(指针或者引用),如果指针需要频繁拷贝,用智能指针是一种不错的选择

2.启用内存池管理线程的内存开销,事先在堆里边分配好,然后快速使用

避免复杂的浮点运算

1.复杂的浮点运算尽量避免,有些芯片是不支持硬件双精度浮点数的,比如全志T3,实在是非用不可,可以用查表的方式加快速度

2.数据传输可以用整型数据压缩减少带宽,这个在can数据传输比较常见

空间换时间

比如一个数据模型体积很大,加载起来很耗时,可以考虑把它编译到软件里边去,然后运行的时候提前加载到内存

算法复杂度优化

1.时间复杂度,减少循环使用次数

2.空间复杂度的角度优化

并行框架

openMP了解一下,在关键的代码段加上omp并行处理

字节对齐

用好字节对齐功能可以优化cpu流水线的处理效率

内核态的利用

可以把一些业务操作写进驱动,利用操作系统的调度优化,内核态用户态哪一个更高效,这个是相对的,得看系统调用和库函数的颗粒度,可以值得尝试一下

线程调度

尝试调整一些线程的优先级提高调度效率,另外Linux也允许绑核操作

防御性编程

  • 申请一段buffer后总是习惯性的将其内容memset为0,当然这是针对plain类型的数据,防止在数据解析的时候解析到不合法的数据
  • 总是习惯性的判断数组的边界
  • 申请指针不应该悬空,应该给它一个值或者是nullptr,使用前判断它是否为空
  • 巧用断言
阅读剩余
THE END