作者littleshan (我要加入劍道社!)
看板ask-why
標題Re: [請益] 計算機概論的問題
時間Tue Jan 16 21:20:05 2007
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.134.48.9
1F:推 slzhao:對"程式設計師偷懶"有點不同的見解.在早期的CPU,累加的執行 01/16 08:07
2F:→ slzhao:速度跟直接加一個數值是不同的,這樣寫可明確告訴CPU用累加 01/16 08:08
3F:→ slzhao:而非用一般的加法,對程式最佳化有幫助. 01/16 08:09
推
andrew43:推本文作者與一樓 01/16 08:16
4F:推 littleshan:寫 i=i+1 也可以 optimize 啊...compiler 沒那麼笨 01/16 09:19
5F:推 H45:因為低階語言的ADD指令和INC指令的效能是有差的 01/16 10:15
6F:→ H45:另外在Z Spec中,i++是否可以表示成i'=i+1? 01/16 10:16
7F:推 littleshan:add 和 inc 不一定有差 要看 architecture 01/16 11:43
8F:推 H45:同一個architecture會有相同的instruction set吧? 01/16 14:10
9F:→ H45:也許樓上上指的是organization? 01/16 14:12
相同的 instruction set 不一定有相同的 architecture
以前也許 inc 比 add 快
但現在的 x86 架構下 兩者根本是一樣快的
(自己試一試就知道了)
10F:推 H45:不過我們應該只是討論為什麼有i++吧.... 01/16 14:16
11F:→ 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
12F:推 kevinjl:因為宣傳這種理念 符合我的利益 01/17 08:16
13F:→ kevinjl:抱歉推文寫錯篇 上一句 是要推在上一篇的 請問怎麼刪推文ꄠ 01/17 08:18
14F:推 slzhao:在設計C語言時,大部分CPU對於inc跟add的速度是有差的. 01/17 08:26
15F:→ slzhao:而C語言本來就不是定位在很高階的程式語言,最佳化在初期也 01/17 11:38
16F:→ slzhao:是很簡陋的.因為compile時間也是cost. 01/17 11:40