Algorithm 版 (精华区)

发信人: Lerry (life is waiting...), 信区: Algorithm
标  题: [合集]听说
发信站: 哈工大紫丁香 (2003年11月27日18:39:25 星期四), 站内信件


────────────────────────────────────────
 jijian (CC)                          于 2003年10月18日19:10:44 星期六 说道:

++i  比  i++快

────────────────────────────────────────
 iamxiaohan (潇寒)                    于 2003年10月18日21:07:27 星期六 说道:

nod
++i就是一个指令 inc
而i++是 
int temp = i ;
i = i+1 ;
return temp ;

────────────────────────────────────────
 JINNIE (jinnie)                      于 Sun Oct 19 00:41:17 2003 说道:



1,不能用汇编解释++i,而用C语言来解释i++;
2,其次,++i也需要返回值;

────────────────────────────────────────
 iamxiaohan (潇寒)                    于 2003年10月19日01:13:23 星期天 说道:

虽然一个用汇编解释一个用C解释有点搞笑,
但实际情况就是这样的,
不信你可以反汇编看看,
++i返回的是i的地址,可以做为左值,&++i是可以的,而&i++是不可以的

────────────────────────────────────────
 JINNIE (jinnie)                      于 Sun Oct 19 23:07:18 2003 说道:

在VC6下调试模式下汇编结果:
10:       i++;
00401903   mov         eax,dword ptr [ebp-10h]
00401906   add         eax,1
00401909   mov         dword ptr [ebp-10h],eax
11:       (++i) = 5;
0040190C   mov         ecx,dword ptr [ebp-10h]
0040190F   add         ecx,1
00401912   mov         dword ptr [ebp-10h],ecx
00401915   mov         dword ptr [ebp-10h],5

以前还不知道(++i)竟然是个左值,多谢!


────────────────────────────────────────
 jijian (CC)                          于 2003年10月20日09:05:08 星期一 说道:

那么  ++i 的反汇编是inc吗
有的资料说两个都有返回值。

────────────────────────────────────────
 iamxiaohan (潇寒)                    于 2003年10月20日09:11:39 星期一 说道:

这个与编译器有关,
我用Borland C++ 5.6 ,ida反汇编结果就是inc
i++是有返回值,返回的是一个临时变量的值,
而++i返回的是左值,
对于i++
可以理解为
{
int temp = i ;
i=i+1;
return temp;
}
当然,实际汇编结果并不一定是这样,
对于不同的编译器会做不同的优化,
像对于bc 5.6 ,它就非常聪明,
如果只有
i++

++i
而没有其它语句,它就全产生成 inc 指令,
因此,对于 bc5.6
for(int i = 0 ; i<10 ;i++)
的速度与
for(int i =0 ; i<10 ; ++i)
其实是一样的,它们的指令被汇编成一样的了,
但对于一些其它的编译器就不一定了,第一条语句要比第二条慢些。
你可以用一些编译器反汇编看下,
纯C论坛上,逆向工程版面有ida提供下载!:)

────────────────────────────────────────
 jijian (CC)                          于 2003年11月17日18:40:36 星期一 说道:

FFT可以将两个大数的乘除运算时间由O(n2)缩短为O(nlog(n))。

────────────────────────────────────────
 pineapple (菠萝)                     于 2003年11月17日18:49:34 星期一 说道:

时间常数比较大, 计算真正的天文数字才能看出优势. 几万位的小打小闹是没有必要的

────────────────────────────────────────
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.154毫秒