switch 與 if else 效率分析與總結
阿新 • • 發佈:2019-01-22
本文是對網上一些討論switch 與 if else 效能的參考資料的總結。
參考資料列表:
總結:
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語句快。