作者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