: 隨著語法的進步
: 很多會寫 code 的人都很少寫判斷式了
: 很多Javascript 高手都是用 switch 取代
好啦 假設不是反串 我覺得滿有道理的
但有一點其實你說錯了 其實並不是語法進步
之前學 Rust
覺得哇 pattern matching 真是他媽神 好潮喔
後來跑去學 OCaml 我才發現(Rust設計者是OCaml粉 一開始的compiler就是用OCaml寫)
阿幹 原來很多觀念 OCaml早就有了
編譯器/直譯器還會幫你檢查你的match是不是包含了所有的case
老實講寫ML真的會帶來很多跟C/C++不同的思維
所以與其說語法在進步 不如說在語法在逐漸把過去FP的東西搬進來
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.111.242 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1671368370.A.6EA.html→ qss051樓是說switch的效率到底有沒有比if else高啊?之前看人家測 12/18 23:48
→ qss052樓試,超過3個選項的話,switch的效率比較好,但是之前跟別 12/18 23:48
→ qss053樓人討論,他一直堅持if效率更好,不管幾個判斷 12/18 23:48
現在編譯器很發達,如果雙方僵持不下,我是建議直接看asm跟量效能
阿如果看不懂asm,代表程度還沒有到要吵這種效能的地步
我的經驗是branch misprediction的效能影響還比較嚴重 而且實務上也更容易遇到
現在編譯器已經發達到有些人寫C++都不用reference跟pointer
O2 O3開下去速度照樣ㄅㄧㄤˋㄅㄧㄤˋ叫的地步
→ Apache4樓看你編譯跟執行環境 12/18 23:50
labbat5樓看asm也不夠準啦,寫的程式碼片段讓分支預測器或快取預抓 12/19 10:30
→ labbat6樓太好猜,那就會有虛假的跑分效應 12/19 10:30
→ Hsins7樓辣個效能是能影響多少?有時間擔心 switch 跟 if else 的效 12/19 10:33
→ Hsins8樓能差異,不如想想一些多層的 for 迴圈是不是必要… 12/19 10:33
kurtsgm9樓普遍討論是多condition的情況下switch稍稍略優於if-else 12/19 11:11
→ kurtsgm10樓但差異也很微小 與其在那邊爭哪個performance好 乖乖看情 12/19 11:12
→ kurtsgm11樓境寫可讀性高的code還比較實際一點 12/19 11:12
→ antpro12樓全部都放進 embedded system 跑來看看。 12/19 12:21
→ testPtt13樓switch有些語言改的很棒 結合lambda清爽很多 12/19 16:51
CoNsTaR14樓不用吵了,array lookup 比 switch case / if else 都快 12/19 18:57
→ shooter55515樓switch 跟 if-else的速度在實際上真的有人在意嗎 12/20 11:44
→ leolarrel16樓寫MCU的人比較會在意吧.老闆要最便宜的MCU但是搞最多的 12/20 13:28
→ leolarrel17樓功能的時候... 12/20 13:28
tw1150918樓我是聽朋友說在產線上每次都差一點點時間,累積起來就是 12/20 19:08
→ tw1150919樓很多時間,當然有差 12/20 19:08
j095832208020樓寫韌體的會在意阿 12/21 00:26
→ jobintan21樓條件少就用if else,條件多的話就switch囉。 12/23 10:16
→ jobintan22樓BTW,條件多的話,我還沒見識過三元判斷式的操作法。www 12/23 10:17
→ peter9823樓在那邊扯switch跟if-else效率的 肯定是計算機架構沒學好 12/23 21:56
→ peter9824樓系統的bottleneck很少出現在if/switch這種判斷式。。。 12/23 21:57
這篇有誰提到bottleneck的嗎 板上有人不知道80:20的嗎www
他的問題是if跟switch到底哪個效率好
以前也有人驗證過for迴圈寫成i++跟++i的差別 (結論是編譯器都會優化好)
當然就問題本身討論咩
CoNsTaR25樓++i 和 i++ 編譯器不一定會優化成一樣喔 12/27 01:23
→ CoNsTaR26樓如果 i 是可以放進 cpu cache 的 type,i++ 因為回傳 ref 12/27 01:23
→ CoNsTaR27樓所以不能 cache,會比 ++i 慢(慢很多) 12/27 01:23