返回信息流在一些源代码中看到。。。然后书上说,
(array+constnum)[i]编译出来的程序,比
array[constnum+i]编译出来的程序,要更快一些呢?
本科不是计科的,没学过编译原理之类的课程,确实不明白为什么?谁知道的话说一下吧,谢谢啦~!~
这是一条镜像帖。来源:北邮人论坛 / cpp / #42365同步于 2010/8/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
为什么常量加在这(array+constnum)[i]编译的程序会快一点呢?
times123
2010/8/12镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
这个要是涉及到效率 个人以为效率差不多
至于源代码为啥那样写,个人以为是最重要的是清晰起见,而跟效率关系应该不大
如果你硬要知道是否效率高 我也可以分析下:
注意,是在不优化的条件下:
(array+constnum)[i]
array是个常量,constnum也是常量,所以两者相加直接计算一次。
array[constnum+i]
而这个呢,要根据i的值实时计算出constnum+i,注意,多一个加的计算过程。
如果要比较上面两者效率,不妨想象下在一个循环内部,上面的语句的加的计算次数。
上面是在不优化的条件下才会出现这样的差异,一般而言,这样的东西,编译器一眼就能认出来可以优化,立马优化得无影无踪,没啥区别了。。
嗯,应该就是你说的那样了吧,一时没想明白,看到编译两个字,就只知道想编译我没学过应该不会。。。唔,书是AST的设计与实现,翻译的挺烂,可惜了。。。
相关的源代码是PCB相关的一些源代码,对效率要求比较高的代码,所以作者比较注重效率吧
编译器优化那个毕竟还是取决于编译器的,而显式的写出来,更可能编译出效率高一些的程序吧
优化有三种
1 不优化
2 手工优化
3 确定能产生优化效果时才优化
【 在 zxsword (YNWA) 的大作中提到: 】
: 嗯,应该就是你说的那样了吧,一时没想明白,看到编译两个字,就只知道想编译我没学过应该不会。。。唔,书是AST的设计与实现,翻译的挺烂,可惜了。。。
: 相关的源代码是PCB相关的一些源代码,对效率要求比较高的代码,所以作者比较注重效率吧
: 编译器优化那个毕竟还是取决于编译器的,而显式的写出来,更可能编译出效率高一些的程序吧
: ...................