zoukankan      html  css  js  c++  java
  • switch和if else的比较

    if-else
    只是单纯地一个接一个比较;if...else每个条件都计算一遍;

    switch
    使用了Binary Tree算法;绝大部分情况下switch会快一点,除非是if-else的第一个条件就为true编译器编译switch与编译if...else...不同。不管有多少case,都直接跳转,不需逐个比较查询;switch只计算一次值,然后都是test , jmp,

    有很多else if的时候,用switch case比较清晰。switch使用查找表的方式决定了case的条件必须是一个连续的常量。而if-else则可以灵活的多。对于switch语句来说,起实际是使用一个跳转表实现分支结构,不需要一次进行比较每一个所需要的条件。进行比较的次数为1.但是对于if…else语句来说:最少的比较次数为1,跟switch相比,在时间方面,switch语句的执行速度比if else要快,但是在程序执行占用的空间方面,switch语句需要一张跳转表来维护。这个跳转,表的本质是一个拥有标号的数组,需要额外的存储空间,if else语句的空间效率更好一点。switch是一个很典型的空间换时间的例子。但是switch只能判断是一个指定值的数据,而不能对一个区间中的数据进行判断。这时候选择if…else语句是一个很好的选择。


    switch case与if else的效率问题

    switch case与if else的区别:switch case会生成一个跳转表来指示实际的case分支的地址,而if...else却需要遍历条件分支直到命中条件。


    switch case的优缺点

    (1)switch case的优点:

    当分支较多时,用switch的效率是很高的。因为switch是确定了选择值之后直接跳转到那个特定的分支.

    (2)switch case的缺点:

    1.switch...case占用较多的代码空间,因为它要生成跳表,特别是当case常量分布范围很大但实际有效值又比较少的情况,switch...case的空间利用率将变得很低。

    2.switch...case只能处理case为常量的情况。


    if else的优缺点

    (1)if else的优点:if else能应用于更多的场所以if else比较灵活。

    (2)if else的缺点:if else必须遍历所以的可能值。

    总结:
    在选择分支较多时,选用switch…case结构会提高程序的效率,但switch不足的地方在于只能处理字符或者数字类型的变量,if…else结构更
    加灵活一些,if…else结构可以用于判断表达式是否成立,比如if(a+b>c),if…else的应用范围更广,switch…case结构在某些情况下可以替代if…else结构。

  • 相关阅读:
    python 的基础 学习 第六天 基础数据类型的操作方法 字典
    python 的基础 学习 第五天 基础数据类型的操作方法
    python 的基础 学习 第四天 基础数据类型
    ASP.NET MVC 入门8、ModelState与数据验证
    ASP.NET MVC 入门7、Hellper与数据的提交与绑定
    ASP.NET MVC 入门6、TempData
    ASP.NET MVC 入门5、View与ViewData
    ASP.NET MVC 入门4、Controller与Action
    ASP.NET MVC 入门3、Routing
    ASP.NET MVC 入门2、项目的目录结构与核心的DLL
  • 原文地址:https://www.cnblogs.com/ranyonsue/p/12744066.html
Copyright © 2011-2022 走看看