手机上的算法优化 —— 分支优化

本文探讨了如何在手机上优化算法,重点关注分支优化。通过函数表、likely优化和switch语句的方式,试图解决if-else带来的问题。函数表优化增强了代码可读性,但增加了内存占用;likely优化利用编译器指令提高效率,而switch优化则提供清晰的代码结构,但在扩展性方面仍有挑战。最后,引入策略+工厂模式作为潜在的优化解决方案。
摘要由CSDN通过智能技术生成

【前言】

        作为一个程序猿,if - else的使用会贯穿我们的整个职业生涯,但是有句话说的好,成年人不做选择题,那我们应该如何避免选择题呢?

【Show me the fucking code!】

if(condition 1) {
    分支流程1
} else if(condition 2) {
    分支流程2
}
 ……
else {
    分支流程n
}

【违反开放、封闭原则】: 新增一种判断时,会新增一个if-else分支

【函数表优化】

针对与上述原则,建议使用函数表结构

typedef bool (*ProcessFuncPtr)(const ItemState& current, ItemState& next);
struct ActionProcess{
    Action act;
    ProcessNextFuncPtr processFunc;
}

ActionProcess actMap[] =
{
    {FARMER_GO, ProcessFarmerGo},
    {FARMER_GO_TAKE_WOLF, ProcessFarmerGoTakeWolf},
    {FARMER_GO_TAKE_SHEEP, ProcessFarmerGoTakeSheep},
    {FARMER_GO_VEGETABLE, ProcessFarmerGoVegetable},
    {FARMER_BACK, ProcessFarmerBack},
    {FARMER_BACK_TAKE_WOLF, ProcessFarmerBackTakeWolf},
    {FARMER_BACK_TAKE_SHEEP, Proces
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值