ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

C switch 和if性能优化区别

2021-04-17 11:02:18  阅读:107  来源: 互联网

标签:case 10 int 性能 break switch main 优化


if使用优化一般是 知道数据样本分布 例如学生成绩

int  main()
{
    int i = 10;
    if (i <= 100 && i>90)
    {

    }
    else if(i <80&&i<90)
    {

    }
    else if (i < 60 && i < 80)
    {

    }
    //如此类推
    return 0;
}

那么60分到80分就是最多的这个时候分支条件应该是最先判断的

int  main()
{
    int i = 10;
    if (i < 60 && i < 80)
    {

    }
    else if(i <80&&i<90)
    {

    }
    else if (i <= 100 && i > 90)
    {

    }
    //如此类推
    return 0;
}

可以通过对数据样本的细分把if条件判断最优化

switch 就是数组取值 效率也是最高的。这里也有编译器优化

int  main()
{
    int i = 10;
    switch (i/10)
    {
    case 10:break;
    case 9:break;
    case 8:break;
    case 7:break;
    case 6:
    case 5:
    case 4:
    case 3:
    case 2: break;
    }
    //如此类推
    return 0;
}

运行一下这里执行看一下汇编

 

找到左花最后操作jmp 一个地址 里面有存放的case 下标

0x00234F0C 这个地址去看他的内存

 

 一共9个就是case 下标地址就和数组取值一样

 

 

 当你的标识不是连续时 最大小值差值不超过12 就是执行此优化 所以在使用时可以考虑下标参数的优化 不知道区别就去看汇编指令对比

 

标签:case,10,int,性能,break,switch,main,优化
来源: https://www.cnblogs.com/feizianquan/p/14669715.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有