switch 与 if else 效率分析与总结

原创 2013年12月05日 11:32:50

本文是对网上一些讨论switch 与 if else 性能的参考资料的总结。


参考资料列表:

[1] if elseif 和switch那个执行效率高?

[2]从汇编的角度分析C语言(六)switch和if else效率分析 

[3]switch与ifelse的效率问题 

[4]switch为什么比if else效率高????? 

[5] if和switch效率的再研究


总结:

1.基本上大家都认同swich的效率要比if else高。

      从汇编语言分析,跳表技术,书籍参考《C++高效编程:内存与性能优化》第7章基本编程语句之7.1.4选择语句的性能比较 等等,多角度证明了该问题:switch效率高。

2.switch的优缺点

   缺点:不够灵活,switch仅支持 int,char,unsigned char 等基本类型;代码空间大。

   优点:代码结构清晰,效率高

3.if else的优缺点

  缺点:效率低(相对于switch)

  优点:使用灵活,代码空间小


其实if else作为关键字,本身的效率还是很高的。在使用的时候要考虑具体的需求,不必过分纠结与他们的性能差别。


下面是一个比较权威的说法:

《C++ Footprint and Performance Optimization》的7章,第一节。

然后根据大量的实际程序测试(不考虑不同的编译器优化程度差异,假设都是最好的优化),那么Switch语句击中第三个选项的时间跟if/else if语句击中第三个选项的时间相同。
击中第一,第二选项的速度if语句快,击中第四以及第四之后的选项的速度switch语句快。


switch与ifelse的效率问题

switch与if..else 的执行的效率问题 今天读一前辈的程序,发现其在串口中断里面为了分析协议的报文类型,在中断函数里面使用if..else语句。因为报文类型在现在看来只有两种,以后有可能还会...
  • kehui123
  • kehui123
  • 2010年02月08日 13:04
  • 57847

if else 和 switch的效率

switch在判断分支时,没有判断所有的可能性,而是用一个静态表来解决这个问题,所以速度要比if-else快。 但是,switch对较复杂的表达式进行判断,所以当我们需要判断一些简单数值时,用sw...

if else 和switch 的区别

switch进行一次条件判断后直接执行到程序的条件语句.      if...else有几种条件,就得判断多少次.    如果纯粹比较数字或字符,建议使用switch,因为它只会在一开始的s...

成为C++高手之if与switch

比较讲解if与switch语句
  • nkmnkm
  • nkmnkm
  • 2016年05月11日 05:58
  • 5169

javascript性能提升——合理使用if-else 和switch

——authored by 李家优 使用if-else 或者switch 是基于测试条件的数量:条件数量较大,倾向于使用switch 而不是if-else。这通常归结到代码的易读性,如果条件较少时,i...

if...else与switch...case的执行效率问题

原文地址:http://blog.csdn.net/kehui123/article/details/5298337 switch与if..else 的执行的效率问题  今天读一前辈的程序,发...

C语言优化实例:一种消除嵌套switch-case的巧妙做法

我们有可能会写出或者遇到类似这样的代码: C/C++ switch (expr1) { case label11: switch (expr2) ...
  • chfe007
  • chfe007
  • 2014年10月30日 10:25
  • 3429

C++ 取代switch的三种方法

1.常规switch enum EnumType { enumOne, enumTwo, enumThree }; void showMessage(int type) {...

C语言 switch和if..else的区别 以及枚举的作用

C语言 switch和if..else的区别   以及枚举的作用 1.分支结构的两种形式:if/else 和 switch/case 2.两者简单的区别:前者是两个分支的选择,后者是多分支选择...

C语言选择语句的使用---if()-else和switch--case

这篇文章主要是关于C语言中的选择语句的使用: 在C语言中主要使用if--else;和switch case语句,下面给大家介绍他们的用法. if(选择条件) { 满足条件后要做...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:switch 与 if else 效率分析与总结
举报原因:
原因补充:

(最多只允许输入30个字)