[閒聊] 用if else規避一些條件反而更慢?

看板Python作者 (我的帥,在於臉)時間3年前 (2020/12/06 11:14), 3年前編輯推噓5(5010)
留言15則, 9人參與, 3年前最新討論串1/1
選手1號: https://pastebin.com/TL2Ys690 選手2號: https://pastebin.com/B6i600fX 這是integer轉羅馬的題目, 令我比較意外的是, 選手1號有去判斷temp是否為0,是的話直接換下一個不囉唆 而選手2號沒有去判斷,而是即使是0也照著做,感覺會多運算一些,例如下面mod 而實測結果居然是選手2號比較快? 所以可以理解成,判斷是否為0比mod還要慢囉? 那這樣到底要什麼時候去下if else來使程式變快而不是變慢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.10.13.175 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1607224450.A.D52.html ※ 編輯: ericerix (101.10.13.175 臺灣), 12/06/2020 11:14:42

12/06 13:46, 3年前 , 1F
大部分計算比判斷快
12/06 13:46, 1F

12/06 14:07, 3年前 , 2F
因為 CPU 的分支預測猜錯了就會慢很多,所以一些最佳化方法
12/06 14:07, 2F

12/06 14:08, 3年前 , 3F
會用特殊技巧讓判斷變成計算
12/06 14:08, 3F

12/06 15:38, 3年前 , 4F
借串問 dict和array存取速度是否也有差別?
12/06 15:38, 4F

12/06 17:45, 3年前 , 5F
dict 是hash 很快喔
12/06 17:45, 5F

12/06 18:24, 3年前 , 6F
dict存取感覺都慢array很多
12/06 18:24, 6F

12/06 19:57, 3年前 , 7F
Array在Python叫list, 跟dict比速度,詳細要看您怎麼用?如
12/06 19:57, 7F

12/06 19:57, 3年前 , 8F
果您要存取的list元素要線性搜尋,這時改用dict 會快很多
12/06 19:57, 8F

12/06 20:40, 3年前 , 9F
推樓上~
12/06 20:40, 9F

12/06 22:49, 3年前 , 10F
不保證誰快 不過有些方法的優勢要在資料量大才顯現的出來
12/06 22:49, 10F

12/07 01:25, 3年前 , 11F
詳情請見算盤本 簡單來說因為處理器中pipeline設計的緣故會
12/07 01:25, 11F

12/07 01:25, 3年前 , 12F
有些難以處理的情況 而if系列的指令就是其中一種(control ha
12/07 01:25, 12F

12/07 01:25, 3年前 , 13F
zard) 雖然有更進一步改進解決的方法 但一般來說能避免判斷
12/07 01:25, 13F

12/07 01:25, 3年前 , 14F
式的寫法還是會比較快 有錯還請指正
12/07 01:25, 14F

12/08 16:48, 3年前 , 15F
可以google "CPU 管線 分支預測"
12/08 16:48, 15F
文章代碼(AID): #1Vp4o2rI (Python)