1. 程式人生 > >switch 與 if else 效率分析與總結

switch 與 if else 效率分析與總結

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