首页
社区
课程
招聘
[求助]前加和后加效率问题
发表于: 2010-11-25 21:11 4370

[求助]前加和后加效率问题

2010-11-25 21:11
4370
今天在某公司应聘遇到的笔试题。

问++i 比 i++效率更高,为什么?
自己当时没答上,然后回到学校自己用VC调试,发现编译出的汇编代码都一样,猜想可能是编译器优化的结果,想问下未优化时,前加和后加的代码是怎么样的。。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 952
活跃值: (1821)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
stl迭代器的话++i 和 i++区别大 因为 i++需要产生一个新的对像返回 而++i只要修改里面的指针值

但是 如果 i是int的话 对现在的编译器来说 不存在任何区别 无任何优化的话 i++可能多用一个寄存器来保存临时值
2010-11-25 21:47
0
雪    币: 300
活跃值: (179)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
3
好,大家都来猜。我最喜欢猜的了:
++i 大概分为:
1、从内存取值到eax寄存器(不一定就是eax,我随便说的),
2、+1
3、将寄存器的值写入原来的内存。
i++的情况:
1、从内存中取值到寄存器
2、使用
3、再次从内存取值到寄存器
4、+1
5、写回。
==========以上存属猜测!
2010-11-25 21:50
0
雪    币: 401
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
理论上讲前++可以直接用inc m32,后++则要先把值弄到某寄存器里(因为下面可能还要用),然后inc m32,所以多了一个操作,但是早在几年前,编译器就不这么傻了,所以基本上可以说一样了。

这道题好像N年前就不考了吧。
2010-11-25 22:06
0
游客
登录 | 注册 方可回帖
返回
//