总结下我在做c++开发的过程中用到的性能优化,这些优化场景均是要求在设备上达到最大的计算性能,总结如下:
系统层次
1.使用oprofile对整个系统的性能进行分析,采用的是硬件计数器,效率高,负载低,且结果准确。
2.使用perf测试cpu命中率
编译层次
1.debug->release
2.-O1 -O2 -O3
3.使用静态库性能大于动态库。动态库第一次访问的时候会GOT造成耗时.运行时性能损失5%
算法层次
1.map-->hashmap
2.根据不同的使用场景使用不同的stl 插入 删除 查找 排序
3.使用效率更高的算法
4.使用空间换时间-放到队列中立刻返回
代码层次
1.cache命中
2.if else命中
3.内联函数
4.函数参数<3个 使用寄存器而不是内存
5.提前计算--多次使用的变量 提前计算好
6.延迟计算--用不到的变量用到的时候再去初始化
7.用宏 可以在编译时进行优化
8.局部变量初始化成本过高 尽量少用
9.避线程间的锁
10.内存对齐
11.多通道编程 数据独立按照通道构造数据
12.按照cacheline定义数据结构 内存虽然有浪费 但速度快
13.使用全局变量 利用cpu缓存的局部性原则增加数据缓存的几率
14.遍历二维数组的时候先遍历二位下标(连续内存)
15.提前new好内存 减少系统调用malloc/free的耗时
16.减少乘法、除法 多用位移运算
17.少用float结构
18.减少频繁内存分配 会因为内存碎片导致性能下降
19.使用引用和指针 减少值传递
20.利用多核特性 线程间顺序做业务
21.线程间ringbuffer无锁队列



