- 论坛徽章:
- 11
|
本帖最后由 Ager 于 2012-09-03 20:58 编辑
OwnWaterloo 发表于 2012-05-12 21:08
p[x]与*(p+x)?还性能比较? 它们是等价的,知道吗?
这里,我觉得,又出现了麻烦事情 ……
这里的“性能”,到底指什么?是按照源代码被编译的速度为指标?还是被链接的速度?被装载的速度?或是程序被执行的速度?(解释型语言,在这个问题上,就容易许多了。)
“等价”的观念又该如何理解?被比较的两方,将在哪一个层面上被做关于“等价”的判断?
至于walleeee提到的“p[x]、*(p+x),这2个性能的比较,第二个要稍微快一些”,我就有些糊涂 …… 至少,从gcc编译出的指令看 ……- int x=2;
- 804839a: c7 45 fc 02 00 00 00 movl $0x2,-0x4(%ebp)
- p[x]=123;
- 80483a1: 8b 45 fc mov -0x4(%ebp),%eax
- 80483a4: c7 44 85 e8 7b 00 00 movl $0x7b,-0x18(%ebp,%eax,4)
- 80483ab: 00
复制代码- int x=2;
- 804839a: c7 45 fc 02 00 00 00 movl $0x2,-0x4(%ebp)
- *(p+x)=123;
- 80483a1: 8b 45 fc mov -0x4(%ebp),%eax
- 80483a4: 8d 14 85 00 00 00 00 lea 0x0(,%eax,4),%edx
- 80483ab: 8d 45 e8 lea -0x18(%ebp),%eax
- 80483ae: 01 d0 add %edx,%eax
- 80483b0: c7 00 7b 00 00 00 movl $0x7b,(%eax)
复制代码 呵呵,以上,仅供参考 …… :)
|
|