首页 > 编程知识 正文

代码优化的目的是,代码优化方法不包括

时间:2023-05-06 15:20:25 阅读:175877 作者:3952

1、消除循环-顾名思义,尽量减少循环的存在

2、函数代码就地扩展-扩展函数所需的时间很长,但每次调用简单、只有几行的函数时,都需要扩展函数所需的资源和时间很长。 在这种情况下,如果编译器使用内联函数编译内联函数,则内联函数的内容将替换为函数调用,从而避免调用函数时的开销。

3、公共子表达式消除-编译器优化项,示例如下,我想这也是volatile存在的意义吧

int main () inta=2,b=3,c=4; int E=a*b*c; //调用到这里时,a b c的三个变量进行运算的int F=a*b*c; //检查到此为止调用时a b c的3个值是否发生了变化,如果没有变化,则将以前计算的值分配给F} 4、改进寄存器分配-编译器优化项

5、省略运行时对数组边界的检查-编译器优化项。 有些编译器提供是否省略运行时数组边界的检查。 当然,函数API如果接收参数中有数组的话,也可以考虑不考虑健壮性而省略数组的边界检查。

6、循环不变量代码移动-目前有些编译器可以自动优化,但有些代码由于特殊原因无法检查,因此无法优化。 例如以下所示

//优化前的inttest_fun(int*num,int a[],int b[] ) {int i; for(I=0; i 10; I({*num=a[I]*b[I] ); //运行时*num始终对num地址指定的值访问内存}return 0; //优化后inttest_fun(int*num,int a[],int b[] ) {int i,test_num=0; for(I=0; i 10; I ) {test_num =a[i]*b[i];//通过使用一个int变量有效避免了每次都取地址值}*num=test_num; 返回0; } 7、操作符长度消减-将指数操作变换为乘法操作、乘法操作变换为移位操作和加法操作等的示例如下所示

//指数操作一般使用row c库函数,简单方便。 这里介绍2的倍数的乘法操作intmain((inta=2,b=2,m=0,n=0)。 m=a * 2; n=a 1; printf(m=(%d ) n=) %d )、m和n ); 返回0; (结果) m=(4) m=(4)4) ) ) ) ) ) ) )。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。