代码优化

部分摘自《代码大全》

1.让运行最快和较大概率为真多判断首先被执行

适用于if/else和case语句

 

2.用查询表代替复杂的表达式

如果有复杂的输入,先将结果计算好放在一张表里

 

3.避免在循环中重复判断,

 

4.设置哨兵值

bool found = false;
i = 0;
while(!found && i < cnt)
{
    if (item[i++] == value)
    {
        found = true;
        break;
    }
}
// 优化后
item[cnt] = value;
while( item[i] != value)
{
    i++;
}
if(i < cnt) found = true;

 

5.循环展开

nt amount = 0;
for(int i = 0; i < len; i++)
{
    amount += a[i];
}
// 优化后
int i = 0;
while(i < len - 3) //注意不能超过len,最后len%4个要处理
{
    amount += (a[i + a[i + 1] + a[i + 2] + a[i + 3] ) ;
    // amount += a[i + 1]; 依赖上一条语句的执行结果,只能顺序执行,不能利用cpu的并行计算
    i += 4;
}
while(i < len)
{ 
    amount += a[i];
    i++;
}

 

6.profile driven optimize

举个例子:

a = b * 50;

如果b大部分情况都等于10,可以优化如下:

a = 50;

if (b != 10)

{

    a = b * 10;

}

 

转载于:https://my.oschina.net/u/558083/blog/823300

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值