[PHP] if 和 switch 比較

前陣子在看PHP the right way 中提到
「應該使用 switch 而不使用重複的 if」

這就激發了我的求知慾啦



難道switch跑得比較快嗎?的確要打的字比較少啦

但是看了幾篇國內外的文章,似乎都是 if 比較快耶


放下正在進行的事情土炮了一隻測試來做研究


可以看出真的是很土炮的方法 XDDD

主要針對兩狀況做測試



  1. 條件有符合判斷式

  2. 條件不符合判斷式,執行 defaulf 或是 else

不使用隨機數作為判斷主要就是把兩種判斷式的差異減到最小


比較時間使用PHP內建的 microtime()函數

會產生一個microtime的timestamp,取得比較精確的執行時間


而可以發現執行結果上面,if 真的跑得比 switch 快

尤其是當條件是可以搜尋到的時候,甚至可以差到五倍速度

雖這樣說,但事實上差不到百分之一秒

但若是之後需要回來 trace code 使用 switch 的確是比 if 來得易讀

所以可以得到一個結論:會要求使用 switch 而非一堆 if 的原因是基於程式可讀性

一堆的 if 判斷式若是未來需要修改或是維護時很容易造成錯誤

所以這邊是稍微犧牲了效能,換來人工上的方便。


又學習了一課,直覺都是覺得 swich 執行起來比較快
其實看文章也可以得到這個結論,但我認為寫程式這種事情
必須要 get your hands dirty 更能夠下深刻印象並且了解原理


留言