switch 与 if else 效率分析与总结
2015-03-25 00:00
441 查看
本文是对网上一些讨论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语句快。
参考资料列表:
[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 与 if else 效率分析与总结
- switch 与 if else 效率分析与总结
- php中switch与ifelse的效率区别及适用情况分析
- php中switch与ifelse的效率区别及适用情况分析
- if else 和 switch的效率
- switch与ifelse的效率问题
- switch...case和if...else效率比较
- switch与ifelse的效率问题
- JAVASE总结--03(方法、if-else、switch-case)
- switch与ifelse的效率问题
- C/OC 语言 if else 和switch 哪个更效率
- 五、Java基础---------if else、switch总结
- switch与ifelse的效率问题
- switch与ifelse的效率问题
- switch...case和if...else效率比较
- switch/ifelse 使用总结
- C语言控制语句总结(if else for switch while break continue)
- 游戏消息效率之switch...case && if...else
- 智力题总结——求1+2+…+n, 要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。
- switch与ifelse的效率问题