一,cpu无关 (作为冯诺依曼模型的计算机,如何优化)
1,减少code path (显示、代码级)
减少重复计算
减少内存复制
调整代码执行顺序
减少内存申请
注意字节对齐
减少参数个数
使用指针参数
宏,内联函数:空间换时间
删除多余初始化
2,指令优化(隐式、了解代码的指令)
3,空间换时间(隐式、优化代码算法)
软表:引入软表,提升查询性能
数组:数组性能优于链表,但可能引起内存浪费
二,CPU相关
1,gpr
尽量使用GPR(参数个数),减少内存访问
2,提升cache命中率
数据集中
代码集中
3,提升分支预测准确率
1,减少code path (显示、代码级)
减少重复计算
减少内存复制
调整代码执行顺序
减少内存申请
注意字节对齐
减少参数个数
使用指针参数
宏,内联函数:空间换时间
删除多余初始化
乘除法:除法换乘法,使用移位算法
降低浮点精度
软表:引入软表,提升查询性能
数组:数组性能优于链表,但可能引起内存浪费
1,gpr
尽量使用GPR(参数个数),减少内存访问
数据集中
代码集中
if优先
使用宏影响编译器的预测
遗留问题:
1) 为什么乘法效率高于除法?
2)cache研究