数值计算的常见优化方法
浮点运算变整数运算
CPU进行浮点运算比较慢,我们可以用整数运算进行替代,比如
0.299 * X
转换成
(229 * X)/1000
位移代替计算
当乘与或者除于2^N次方时,可以使用位移运算来左移/右移N位来代替,比如
(229 * X) / 1000
转换成
(1224 * X) / 4096
由于4096是 2^12
因此只需要把 1224 * X
的值右移12位即可
查表法
当某些运算式子大量重复时,我们可以把这些式子的值预先计算出来并缓存起来。在后面需要的时候直接把结果查出来。
unsighed short代替int类型
编译器处理unsigned short类型的效率比int类型高. 当计算范围足够时,可以使用unsigned short代替int类型
内联函数
将函数声明为inline,可以减少CPU调用函数所产生的开销。