看板 Soft_Job 關於我們 聯絡資訊
不知版上有沒有「無聊的」人做過實驗 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
james732:以前老師說switch可以用查表來做,速度可能會比較快 07/18 01:24
james732:畢竟if-elseif要一個一個測試下去 07/18 01:25
littlethe:效能應該差不了多少吧?這時候我就會以撰寫速度來選擇 07/18 01:47
andymai:如果條件和目的可以用"算的"~那應該會最快~程式碼也超短 07/18 04:52
Obb:對人而言.. switch比較快. 維護也方便 07/18 06:42
vyjssm:電腦都很快,一點效率差不重要。給人眼看得快比較重要 07/18 07:19
iincho:這個...你看一下compile出來的assembly就知道了啊 07/18 07:30
Anonymoux:以前討論過了 究效率而言是depend on compiler 07/18 08:24
Anonymoux:還有 要增加可讀性 可用callback 方式實做switch概念^.< 07/18 08:26
x000032001:編譯器會幫你最佳化~"~ 07/18 10:01
rofellosx:看得懂比較重要 07/18 12:51
chrisQQ:#1DBSGJpp (PHP) 這邊有一篇 PHP 的測試。 07/18 13:40
chrisQQ:PHP 測試的結果是 if 比較快。 07/18 13:41
iman00b:我以前有研究過,以 C 來說,應該是 if 比較快。 07/18 18:57
iman00b:另外,switch 編成機器碼不會用查表。 07/18 18:58
iman00b:看來我真的很無聊,因為我是真的編成組合語言來比較~ 07/18 18:58
walking:這種主題,感覺應該比較適合 programming 版的. 07/18 21:24
iincho:switch編成機器馬不會查表示因為case太少. 07/18 22:47
a2350:3Q,感謝大家的回答 07/19 03:03
whyso:switch編出的機器碼,會用jump table(我看過的例子, 07/19 23:18
whyso:case約有8x個. 且jump table還會減去case內的最小數字, 07/19 23:19
whyso:以節省jump table size. 07/19 23:20
onear:組語可能懶得維護table吧,但記得.net framework是會的.. 07/20 00:25