zoukankan      html  css  js  c++  java
  • if与switch的性能比较

    前言

    之前学习Java时,遇到了个问题,有点纠结。当ifswitch都实现相同的功能时,该改采用哪种方法实现?
    我并不懂得如何准确测量两者之间的性能区别,便在OlineJudge上找条该类型的题,来测试两者的性能结果
    好,废话不多说,看图

    下面是运行结果,前者为if的,后者为switch的

    switch的实现

    if的实现


    虽然两者的结果相比,占用内存相同,运行时间相差较大,
    但是OnlineJudge所用的数据是否相同、数据量多大及是否相同等等都不清楚。

    之后翻查了一些其他资料,switch的执行速度并不是一直都超过if,当数据量达到万级或者百万级时,if的执行速度反而会比switch更快

    但是试问一下,大多数方法的控制条件数量都不会超两位数吧?
    所以相比追求更快的运行速度,还不如选择合适的方法实现该功能。

    if在某些情景更适合表达逻辑,而switch也有它的优势。就我知道而言,switch的控制表达式依次与case后的值匹配。遇到相对应的值时,执行对应的执行体,没有break时继续往下执行。

    所以我们可以根据case标签的执行频率排列case标签的顺序进一步提高速度

  • 相关阅读:
    OpenCV+iOS开发使用文档
    Mac下OpenCV开发
    vs2010+cuda5.0+qt4.8
    对于基类添加虚析构函数问题
    PMVS学习中学习c++
    解决ubuntu上opengl的问题
    js中const,var,let区别
    phpstorm 快捷键
    Chrome 控制台console的用法
    【PHP】进一法取整、四舍五入取整、忽略小数等的取整数方法大全
  • 原文地址:https://www.cnblogs.com/chenjunping/p/6215458.html
Copyright © 2011-2022 走看看