1.删除没有用到的变量
2.删除变量的拷贝
3.删除没有用到的赋值
4.删除不必要的赋值语句
如果赋给变量的值从未在程序中用到过,那么执行赋值语句是没有意义的
在定义变量时明确的对变量进行初始化!
int* p;
int a = 10;
p = &a;
//int* p = &a;
cout << p;
5.删除不必要的表达式
int a, b, c;
a = b = 10;
c = a / b;//编译器自动删除
c = a * b;
cout << c;
6.删除不必要的函数调用
7.做代数变换
int a = 10;
a = ((a * 3) - a) / 2;//等价 a = a;
cout << a;
8.优化子表达式
int a, b;
if((a*b) > 10 && (a*b) < 100)
cout << "yes";
改为如下形式可以减少一次乘法运算
int a, b, temp;
temp = a*b;
if(temp > 10 && temp < 100)
cout << "yes";
1.除法
如果除数时2的幂,除法指令可以用较快的移位指令来替换,也可以使用乘法代替除法(乘法运行速度比出发要快许多)
变换公式:a/b = Math.pow(2, n)/b * a/Math.pow(2, n)
2.求余
机器层面讲,此操作是用除法运算完成的
可以使用移位或者乘法运算代替
3.乘法
如果乘法因子是2的幂,可以使用移位来实现乘法操作
1.用算术运算符替换条件转换
2.删除冗余条件
3.删除肯定不成立的条件
法一:分奇偶
法二:每次在两个数中找最大值与最小值,分别放入两个堆中,减少逻辑树的高度
2.创建跳转表
由case值进行索引并含有指向相应case处理代码的指针数组
1.循环结合
如果两个循环具有一样的循环首部,则应将他们组合成一个公共的循环
2.将不变代码移到循环之外
3.用减1指令替换增1指令
由于减1机器指令在达到0时会将0标志复位,因此没有必要将减小的变量与0进行比较
4.避免在循环内部出现分支指令
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- esig.cn 版权所有 湘ICP备2023023988号-3
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务