[閒聊] 有沒有人做過研究,switch 和 if elseif elseif .... else

看板Soft_Job (軟體人)作者 (a2350)時間14年前 (2011/07/18 01:20), 編輯推噓7(7016)
留言23則, 15人參與, 最新討論串1/1
不知版上有沒有「無聊的」人做過實驗 switch 或 if elseif 這兩種寫法哪一種效率較佳? 有的話請說一下你使用的語言和平台 ex : switch( a){ case 1: .... case 2: .... case 3: .... ....假設5-10個好了.. } vs if(a==1).... elseif(a==2).... elseif(a==3).... elseif(a==4).... 這樣比的話。 我以前的直覺是 if--elseif 會比較快,但沒有實際數據的根據。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.33.4.124

07/18 01:24, , 1F
以前老師說switch可以用查表來做,速度可能會比較快
07/18 01:24, 1F

07/18 01:25, , 2F
畢竟if-elseif要一個一個測試下去
07/18 01:25, 2F

07/18 01:47, , 3F
效能應該差不了多少吧?這時候我就會以撰寫速度來選擇
07/18 01:47, 3F

07/18 04:52, , 4F
如果條件和目的可以用"算的"~那應該會最快~程式碼也超短
07/18 04:52, 4F

07/18 06:42, , 5F
對人而言.. switch比較快. 維護也方便
07/18 06:42, 5F

07/18 07:19, , 6F
電腦都很快,一點效率差不重要。給人眼看得快比較重要
07/18 07:19, 6F

07/18 07:30, , 7F
這個...你看一下compile出來的assembly就知道了啊
07/18 07:30, 7F

07/18 08:24, , 8F
以前討論過了 究效率而言是depend on compiler
07/18 08:24, 8F

07/18 08:26, , 9F
還有 要增加可讀性 可用callback 方式實做switch概念^.<
07/18 08:26, 9F

07/18 10:01, , 10F
編譯器會幫你最佳化~"~
07/18 10:01, 10F

07/18 12:51, , 11F
看得懂比較重要
07/18 12:51, 11F

07/18 13:40, , 12F
#1DBSGJpp (PHP) 這邊有一篇 PHP 的測試。
07/18 13:40, 12F

07/18 13:41, , 13F
PHP 測試的結果是 if 比較快。
07/18 13:41, 13F

07/18 18:57, , 14F
我以前有研究過,以 C 來說,應該是 if 比較快。
07/18 18:57, 14F

07/18 18:58, , 15F
另外,switch 編成機器碼不會用查表。
07/18 18:58, 15F

07/18 18:58, , 16F
看來我真的很無聊,因為我是真的編成組合語言來比較~
07/18 18:58, 16F

07/18 21:24, , 17F
這種主題,感覺應該比較適合 programming 版的.
07/18 21:24, 17F

07/18 22:47, , 18F
switch編成機器馬不會查表示因為case太少.
07/18 22:47, 18F

07/19 03:03, , 19F
3Q,感謝大家的回答
07/19 03:03, 19F

07/19 23:18, , 20F
switch編出的機器碼,會用jump table(我看過的例子,
07/19 23:18, 20F

07/19 23:19, , 21F
case約有8x個. 且jump table還會減去case內的最小數字,
07/19 23:19, 21F

07/19 23:20, , 22F
以節省jump table size.
07/19 23:20, 22F

07/20 00:25, , 23F
組語可能懶得維護table吧,但記得.net framework是會的..
07/20 00:25, 23F
文章代碼(AID): #1E8ndmn3 (Soft_Job)
文章代碼(AID): #1E8ndmn3 (Soft_Job)