前段時間在工作中遇到了一個關於條件判斷語句的問題,在if語句,if else if語句和switch case語句這三者之間分析,使用其中最有效率的一種方法。
所以就將這個問題作為自己第一篇博客的主要內容吧。
if語句,if else if語句和switch case語句都屬於流程控制語句。
在只需要判斷一個條件的時候,自然是使用if語句方便有效;但是當判斷條件很多的時候,我們可以使用多個if語句或者if...else if語句或者switch case語句。
對於這三者的選擇,下面將做一些具體分析;對於后兩者的選擇,又將涉及到程序執行效率的問題。
if...else if語句和多個if語句的區別還是很大的,if...else if在任何一個環節滿足條件的時候就將會終止判斷,只處理一個滿足條件的情況;而對於多個if語句,
將會對每一個判斷條件進行判斷,自然而然會導致程序的執行效率降低。在多個判斷條件的情況下,使用if...else if語句相對於使用多個if語句而言,可以減少程序
的判斷次數,提高效率。
在多個判斷條件的情況下,不僅可以使用if...else if語句,還可以使用switch case語句。一般情況下,當判斷條件較多的情況下,使用switch case語句的
效率會高於使用if...else if語句。switch...case與if...else if的根本區別在於,switch...case會生成一個跳轉表來指示實際的case分支的地址,而這個跳 轉表的
索引號與switch變量的值是相等的。從而,switch...case不用像if...else if那樣遍歷條件分支直到命中條件,而只需訪問對應 索引號的表項從而到達定位分支的目的。
所以從效率上來說由於if...else if的遍歷性,代碼執行效率是不高的。
從匯編層面的分析,請見:http://www.2cto.com/os/201404/291376.html