推 slzhao:對"程式設計師偷懶"有點不同的見解.在早期的CPU,累加的執行 01/16 08:07
→ slzhao:速度跟直接加一個數值是不同的,這樣寫可明確告訴CPU用累加 01/16 08:08
→ slzhao:而非用一般的加法,對程式最佳化有幫助. 01/16 08:09
推 andrew43:推本文作者與一樓 01/16 08:16
推 littleshan:寫 i=i+1 也可以 optimize 啊...compiler 沒那麼笨 01/16 09:19
推 H45:因為低階語言的ADD指令和INC指令的效能是有差的 01/16 10:15
→ H45:另外在Z Spec中,i++是否可以表示成i'=i+1? 01/16 10:16
推 littleshan:add 和 inc 不一定有差 要看 architecture 01/16 11:43
推 H45:同一個architecture會有相同的instruction set吧? 01/16 14:10
→ H45:也許樓上上指的是organization? 01/16 14:12
相同的 instruction set 不一定有相同的 architecture
以前也許 inc 比 add 快
但現在的 x86 架構下 兩者根本是一樣快的
(自己試一試就知道了)
推 H45:不過我們應該只是討論為什麼有i++吧.... 01/16 14:16
→ H45:我認為原因就是一樓說的,ADD指令和INC指令的差異 01/16 14:18
如果你寫 i=i+1;
夠聰明的 compiler 就知道這和 i++; 是同樣的意思
而會選擇最適合的指令完成它
實際上 C 並沒有規定 compiler 看到 i++ 就要優先使用累加指令
也從來沒說你寫 i++ 會比 i=i+1 還快
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.62.3.35
推 kevinjl:因為宣傳這種理念 符合我的利益 01/17 08:16
→ kevinjl:抱歉推文寫錯篇 上一句 是要推在上一篇的 請問怎麼刪推文ꄠ 01/17 08:18
推 slzhao:在設計C語言時,大部分CPU對於inc跟add的速度是有差的. 01/17 08:26
→ slzhao:而C語言本來就不是定位在很高階的程式語言,最佳化在初期也 01/17 11:38
→ slzhao:是很簡陋的.因為compile時間也是cost. 01/17 11:40