if語句與switch之運行效能比較

來源:互聯網
上載者:User

在我剛開始寫程式的時候,我很喜歡寫 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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.