在我剛開始寫程式的時候,我很喜歡寫 if(){...}else if(){...}else{...},所以導致我的程式看上去都是if語句,曾經也有人給我提過,但是我卻不以為然,心想怎麼都能實現,程式何必搞得那麼花哨呢,開始鄙視人家,但是。。當我嘗試用switch的時候,我才發現,我犯一個很大的錯誤,程式不單是講究準確的,而且還是要講效率的!
下面我就來針對這兩種不同的流程式控制制語句進行一個比較:
我們首先來說一下 if語句,if語句是大家可能接觸的最早,也是最先掌握的流程式控制制語句,因為它比較符合我們的順勢思維邏輯:舉一個很簡單的例子:
if(A>B)
{A=B;}
else
{B=A; }
這是一個很簡單的,也是很經典的if語句,如果將這個例子放在switch 語句中,也並不是不能實現,但是實現起來可能會比較麻煩一些,因為在switch語句中case中要求的是常量,一般是不能進行邏輯判斷的, 所以這也是if語句優於switch語句的地方!但是如果您判斷的都是幾個常量的資料,我建議您最好採用switch語句,如下:
switch(A)
{
case:xxxx
///程式碼
break;
case:xxxxxx
///程式碼
break;
}
這樣的語句,雖然if語句也是能實現的,但是效能就比switch差的有點遠了,大家寫程式的,都有過資料庫結構描述的經驗,我們在架構大資料量的資料時,一般是要考慮索引的,我們為什麼要考慮索引呢,至於這一點我就不用跟大家多說了吧?關於資料庫的索引我會單獨寫一篇文章跟大家一起探討!在我看來,switch語句是直接定位的,在我看來跟索引有很多相似的地方,這就是微軟的作品的相似之處吧!直接定位的 Switch語句應該比if語句的效能優越多少,大家應該可想而知了吧?尤其是對於“字串”的比較可能效果會更明顯!對於更深入的探討,我希望大家能給我補充上來,也能讓我們大家一起學習與探討。。。
最後也希望我們廣大的程式員們要善於探索、發現新的知識,不斷總結,不斷的進行自我提高與完善 !
支援原創~~~
在我發表本篇文章後,由很多人已經開始懷疑了,我已從網上找到了一篇很好的文章,並將它轉載了下來,這篇文章我也具體的看了,寫的確實不錯,也證實了我上面的推論是正確的:
文章地址: http://www.cnblogs.com/yeah/archive/2009/02/16/1392094.html
轉自:http://www.cnblogs.com/yeah/archive/2009/02/16/1392077.html