本文是對網上一些討論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語句快。