最近看了并行算法设计与性能优化的书,记录一下串行代码性能优化的一些方法。串行代码性能优化与并行代码优化同等重要,而且可能会获得成千上万倍的加速效果。一般分为七个级别:
1、系统级别 2、应用级别 3、算法级别 4、函数级别 5、循环级别 6、语句级别 7、指令级别
一、应用级别:
1、编译器选项 2、调用高性能库 3、去掉全局变量 4、受限的指针 5、条件编译
二、函数级别
1、函数调用参数的方式 2、内联小函数
三、循环级别
1、循环展开 2、循环累积 3、循环合并 4、 循环拆分
四、语句级别
1、减少内存读写 2、选用尽量小的数据类型 3、结构体内变量的书写顺序,大的写前面 4、表达式移除 5、分支优化,包括尽量避免把判断放到循环里面,而应该把判断放循环外面。然后就是拆分循环、合并多个条件、使用条件复制指令以移除分支、查表法移除分支、分支顺序等 6、优化交换性能
五、指令级别
1、减少数据依赖 2、优化乘除法和模余,位运算代替 3、选择更具体的库函数或算法 4、其他使用const、static 少用 虚函数等