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

相關文章
相關標籤/搜索