前陣子在看PHP the right way 中提到
「應該使用 switch 而不使用重複的 if」
難道switch跑得比較快嗎?的確要打的字比較少啦
但是看了幾篇國內外的文章,似乎都是 if 比較快耶
放下正在進行的事情土炮了一隻測試來做研究
可以看出真的是很土炮的方法 XDDD
主要針對兩狀況做測試
- 條件有符合判斷式
- 條件不符合判斷式,執行 defaulf 或是 else
不使用隨機數作為判斷主要就是把兩種判斷式的差異減到最小
比較時間使用PHP內建的 microtime()函數
會產生一個microtime的timestamp,取得比較精確的執行時間
而可以發現執行結果上面,if 真的跑得比 switch 快
尤其是當條件是可以搜尋到的時候,甚至可以差到五倍速度
雖這樣說,但事實上差不到百分之一秒
但若是之後需要回來 trace code 使用 switch 的確是比 if 來得易讀
所以可以得到一個結論:會要求使用 switch 而非一堆 if 的原因是基於程式可讀性
一堆的 if 判斷式若是未來需要修改或是維護時很容易造成錯誤
所以這邊是稍微犧牲了效能,換來人工上的方便。
又學習了一課,直覺都是覺得 swich 執行起來比較快
其實看文章也可以得到這個結論,但我認為寫程式這種事情
留言
張貼留言