Re: [討論] 寫三元判斷式code review被打槍

作者: EricTCartman (阿ㄆㄧㄚˇ)   2022-12-18 20:59:28
※ 引述《unixxxx (皓皓)》之銘言:
: 隨著語法的進步
: 很多會寫 code 的人都很少寫判斷式了
: 很多Javascript 高手都是用 switch 取代
好啦 假設不是反串 我覺得滿有道理的
但有一點其實你說錯了 其實並不是語法進步
之前學 Rust
覺得哇 pattern matching 真是他媽神 好潮喔
後來跑去學 OCaml 我才發現(Rust設計者是OCaml粉 一開始的compiler就是用OCaml寫)
阿幹 原來很多觀念 OCaml早就有了
編譯器/直譯器還會幫你檢查你的match是不是包含了所有的case
老實講寫ML真的會帶來很多跟C/C++不同的思維
所以與其說語法在進步 不如說在語法在逐漸把過去FP的東西搬進來
作者: qss05 (minami)   2022-12-18 23:48:00
是說switch的效率到底有沒有比if else高啊?之前看人家測試,超過3個選項的話,switch的效率比較好,但是之前跟別人討論,他一直堅持if效率更好,不管幾個判斷
作者: Apache (阿帕契)   2022-12-18 23:50:00
看你編譯跟執行環境
作者: labbat (labbat)   2022-12-19 10:30:00
看asm也不夠準啦,寫的程式碼片段讓分支預測器或快取預抓太好猜,那就會有虛假的跑分效應
作者: Hsins (翔)   2022-12-19 10:33:00
辣個效能是能影響多少?有時間擔心 switch 跟 if else 的效能差異,不如想想一些多層的 for 迴圈是不是必要…
作者: kurtsgm   2022-12-19 11:11:00
普遍討論是多condition的情況下switch稍稍略優於if-else但差異也很微小 與其在那邊爭哪個performance好 乖乖看情境寫可讀性高的code還比較實際一點
作者: antpro (-_*|| 宅)   2022-12-19 12:21:00
全部都放進 embedded system 跑來看看。
作者: testPtt (測試)   2022-12-19 16:51:00
switch有些語言改的很棒 結合lambda清爽很多
作者: CoNsTaR ((const *))   2022-12-19 18:57:00
不用吵了,array lookup 比 switch case / if else 都快
作者: shooter555 (shooter)   2022-12-20 11:44:00
switch 跟 if-else的速度在實際上真的有人在意嗎
作者: leolarrel (真.粽子無雙)   2022-12-20 13:28:00
寫MCU的人比較會在意吧.老闆要最便宜的MCU但是搞最多的功能的時候...
作者: tw11509 (John-117)   2022-12-20 19:08:00
我是聽朋友說在產線上每次都差一點點時間,累積起來就是很多時間,當然有差
作者: j0958322080 (Tidus)   2022-12-21 00:26:00
寫韌體的會在意阿
作者: jobintan (Robin Artemstein)   2022-12-23 10:16:00
條件少就用if else,條件多的話就switch囉。BTW,條件多的話,我還沒見識過三元判斷式的操作法。www
作者: peter98 (新兵)   2022-12-23 21:56:00
在那邊扯switch跟if-else效率的 肯定是計算機架構沒學好系統的bottleneck很少出現在if/switch這種判斷式。。。
作者: CoNsTaR ((const *))   2022-12-27 01:23:00
++i 和 i++ 編譯器不一定會優化成一樣喔如果 i 是可以放進 cpu cache 的 type,i++ 因為回傳 ref所以不能 cache,會比 ++i 慢(慢很多)

Links booklink

Contact Us: admin [ a t ] ucptt.com