代码优化

  1. 在程序执行过程中,加减法操作是计算机最喜欢的操作,其执行时间只占用1个时钟周期,是最快的操作,位运算和移位操作的执行速度和加减法接近。乘法的执行时间要长一些,大概在5个时钟至6个时钟周期内完成.除法的执行速度最慢,大约需要50个时钟周期才能完成一个除法操作,所以移位操作是一个很好的选择,数据左移一位相当于乘以2,右移一位相当于除以2,使用移位操作可以将整数的乘除转换为对整数的移位操作,从而提高速度。
  2. 常量折叠
    例如:
    int a=10;
    a=a+2*17+6; 和 int a a=a+40;这两种形式,第一种需要进行2次加法和1次乘法,第二种只需做一次加法,速度肯定是提高了不小.

3.使用数学公式:
for(i=1;i<=n;i++) sum+=i; 和 sum=((1+n)*n)/2; 前者要执行n次,后者只需执行一个数学公式。
4.存储问题:
例如: 语句1: x=x+1; 语句2: x+=1;
语句1在执行过程中编译器会认为赋值符号”=”两边的操作数不是一个操作数,而是两个,尽管用户知道这两个变量实际上是一个,这时该语句的执行过程分为3部,分别是 寻找存储左边操作数x的内存单元的地址;寻找存储右边操作数x的内存单元地址;
计算x+1的数值并且存储在变量x中.

语句2:该语句在执行过程中编译器会认为赋值符号”=” 两边的操作数是同一个操作数,所以该语句的执行过程分为两步,分别是:寻找存储操作x的内存单元的地址;计算x+1的数值并且存储到x中。

5.分支优化:
把先要判断的条件放在第一位置,if….else 和 switch 语句的区别,if…else 需要比较多次才能实现跳转,而switch 则不要比较那么多次.

6.循环优化:
在循环中有些计算是多次不变的,这种计算称为一次性计算. 由于一次性计算在循环执行期间不改变计算的结果,这时在循环外计算该表达式和在循环内执行的效果是一样的。因此对于这种循环中的一次性计算应当将其放置到循环外.

如果有哪位大神有好的优化方法,请指教了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值