switch 与 if else 效率分析与总结

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


参考资料列表:编程

[1] if elseif 和switch那个执行效率高?性能优化

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

[3]switch与ifelse的效率问题 性能

[4]switch为何比if else效率高????? 测试

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


总结:ui

1.基本上你们都认同swich的效率要比if else高。.net

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

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语句快。

相关文章
相关标签/搜索