应届生求职招聘论坛

标题: Intel面试题二 [打印本页]

作者: lixian6688    时间: 2008-8-29 21:10
标题: Intel面试题二

以下两个程序哪个的performance高,并解释为什么。
a) extern int foo(void); int main() { int i; for(i=0;i<10000;i++) foo(); return i; }

b) extern int foo(void); int i; int main() { for(i=0;i<10000;i++) foo(); return i; }


作者: zhuzhu123    时间: 2008-9-5 22:59
:) :) :) :)
作者: peterpanxmu    时间: 2008-9-9 12:38

如果是debug模式,好像是全局的效率高。因为局部的话还需要通过寄存器间接寻址,全局i则直接寻址。

而如果release的话,vs2005的优化,

局部变量的效率高:因为:

局部i:

 mov esi, 10000    ;

[a href="mailto:$LL3@main"]$LL3@main[/a]):
 call [a href="mailto:?foo@@YAHXZ"]?foo@@YAHXZ[/a])    ; foo
 sub esi, 1
 jne SHORT [a href="mailto:$LL3@main"]$LL3@main[/a])

已经将i放入寄存器了

 

=========================

 

全局i:

mov eax, DWORD PTR [a href="mailto:?i@@3HA"]?i@@3HA[/a]) 
 add eax, 1
 cmp eax, 10000    ; 00002710H
 mov DWORD PTR [a href="mailto:?i@@3HA"]?i@@3HA[/a]), eax   ; i
 jl SHORT [a href="mailto:$LL3@main"]$LL3@main[/a])

 

每次都读写内存~~

[ 本帖最后由 peterpanxmu 于 2008-9-9 13:48 编辑 ]
作者: justsafe    时间: 2008-9-12 21:56
、、、、、、、、、、、、、、、、、、、、
作者: dik408    时间: 2008-9-14 14:12
面试什么职位的啊?
作者: skydragon8    时间: 2008-9-28 13:41
谢谢,不错,顶一个
作者: conan-ly    时间: 2008-10-10 09:41
ddddddddddddddddddddddddddddddddd




欢迎光临 应届生求职招聘论坛 (https://bbs.yingjiesheng.com/) Powered by Discuz! X3.2