提升代码的运算速度——代码优化的方法总结

float、double的计算是比较复杂的,尤其是软件计算,要比较指数,有效数字等,肯定是需要好几个汇编指令的。
浮点数的加法运算(不要问哥为啥只讲加法~)分为下面几个步骤:
对阶
位数求和
规格化
舍入
校验判断

因此总结以下几个方法:

1、1维数组比2维数组好
2、可以把小数转换为整数的乘除,乘法比除法快
3、乘除可以使用移位运算,但前提是2的N次方。同样,如果不是,可以进行通分转换为2的N次方,再进行近似计算
4、数组查表更加快
5、32位可是使用2给ALU,for循环中跨度为2,循环中做2次计算代替逐个计算

如下所示,

    for (size_t i = 0; i < count; i+=2)
    {
        /* code */
        a[i]=...;
        a[i+1]=...;
    }
    for (size_t i = 0; i < count; i++)
    {
        /* code */
        a[i]=...
    }

6、缩短数据类型

7、将函数声明为inline,可以加快系统运行,但会增加内存空间,以空间换时间
8、数组放在高数缓存区(如果有的话)
9、可以用汇编来写
 

原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/12007373.html