内存管理技巧
1.C/C++工程应尽量避免深拷贝
,尽量用浅拷贝
(指针或者引用),如果指针需要频繁拷贝,用智能指针
是一种不错的选择
2.启用内存池
管理线程的内存开销,事先在堆里边分配好,然后快速使用
避免复杂的浮点运算
1.复杂的浮点运算尽量避免,有些芯片是不支持硬件双精度浮点数
的,比如全志T3
,实在是非用不可,可以用查表的方式加快速度
2.数据传输可以用整型数据压缩减少带宽,这个在can数据传输比较常见
空间换时间
比如一个数据模型
体积很大,加载起来很耗时,可以考虑把它编译到软件里边去,然后运行的时候提前加载到内存
算法复杂度优化
1.时间复杂度,减少循环使用次数
2.空间复杂度的角度优化
并行框架
openMP
了解一下,在关键的代码段加上omp并行处理
字节对齐
用好字节对齐
功能可以优化cpu流水线的处理效率
内核态的利用
可以把一些业务操作写进驱动,利用操作系统的调度优化,内核态
和用户态
哪一个更高效,这个是相对的,得看系统调用和库函数的颗粒度,可以值得尝试一下
线程调度
尝试调整一些线程的优先级
提高调度效率,另外Linux也允许绑核操作
防御性编程
- 申请一段buffer后总是习惯性的将其内容memset为0,当然这是针对plain类型的数据,防止在数据解析的时候解析到不合法的数据
- 总是习惯性的判断数组的边界
- 申请指针不应该悬空,应该给它一个值或者是nullptr,使用前判断它是否为空
- 巧用断言