查看: 1369|回复: 8

[已经解决] 变量读取速度的请教

[复制链接]

咩

梦石
0
星屑
1640
在线时间
381 小时
注册时间
2010-10-9
回帖
286

开拓者

发表于 2012-2-17 21:03:22 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
在游戏中要用到某一个值很多次,那么是先把它带入一个局部变量用起来快呐,还是每次用到就直接读取快呐?
比如
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

$XXX_XXX.XXX[X] < 1 and $XXX_XXX.XXX[X] <9 and $XXX_XXX.XXX[X] != 8 #是这样快那还是↓↓↓↓↓↓↓↓↓↓↓↓↓↓
X =  $XXX_XXX.XXX[X]

X<1 and X >9 and X!= 8                      #还是这样快???
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
总之就是想问问局部变量读取速度和很深的变量读取速度有没有区别。

评分

参与人数 1星屑 +40 收起 理由
R-零 + 40 对于优质提问的奖励~

查看全部评分

梦石
0
星屑
64
在线时间
294 小时
注册时间
2011-7-31
回帖
647
发表于 2012-2-17 21:44:44 | 显示全部楼层
没看懂,详细点或者来个图怎么样
如果繁华被摧毁,就让我好好地睡.....
回复

使用道具 举报

咩

梦石
0
星屑
1640
在线时间
381 小时
注册时间
2010-10-9
回帖
286

开拓者

 楼主| 发表于 2012-2-19 08:09:51 来自手机 | 显示全部楼层
自己顶一下。
回复

使用道具 举报

梦石
0
星屑
275
在线时间
1373 小时
注册时间
2005-10-16
回帖
5038

贵宾

发表于 2012-2-19 08:16:32 | 显示全部楼层
这个快慢体会不到,只是看你写的顺手不顺手罢了。
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复

使用道具 举报

咩

梦石
0
星屑
1640
在线时间
381 小时
注册时间
2010-10-9
回帖
286

开拓者

 楼主| 发表于 2012-2-19 08:30:56 来自手机 | 显示全部楼层
亿万星辰 发表于 2012-2-19 08:16
这个快慢体会不到,只是看你写的顺手不顺手罢了。

我晓得这个体会不到,但是如果这段脚本要大量使用的话,是不是还会有点区别?         
回复

使用道具 举报

梦石
0
星屑
275
在线时间
1373 小时
注册时间
2005-10-16
回帖
5038

贵宾

发表于 2012-2-19 08:41:02 | 显示全部楼层
你可以加个循环100000次试试看……
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复

使用道具 举报

梦石
0
星屑
1002
在线时间
1270 小时
注册时间
2011-2-14
回帖
5388
发表于 2012-2-19 09:23:42 | 显示全部楼层
t = Time.now
9999.times{
执行你想要的指令
}
p Time.now - t

你可以试下比较时间哦
回复

使用道具 举报

咩

梦石
0
星屑
1640
在线时间
381 小时
注册时间
2010-10-9
回帖
286

开拓者

 楼主| 发表于 2012-2-19 13:07:33 | 显示全部楼层
R-零 发表于 2012-2-19 09:23
t = Time.now
9999.times{
执行你想要的指令

根据我的游戏需要,每个数值要算3次,再换下一组。实验:
  1. class Foo
  2.   attr_accessor :bar
  3.   def initialize
  4.   @bar = {}
  5.   @bar[1] = [1,2]
  6.   end
  7. end
  8. $foo = Foo.new
  9. t = Time.now

  10. 100000.times{
  11. b = $foo.bar[1][0]
  12. a = 1 if b == 1
  13. a = 1 if b == 1
  14. a = 1 if b == 1}
  15. p Time.now - t
  16. t = Time.now
  17. 300000.times{
  18. a = 1 if $foo.bar[1][0] == 1}
  19. p Time.now - t
  20. exit
复制代码
结果:带入后计算更快
结论(多次不同实验):$xxx_xxxx.x[x]的读取速度只有x的1/2

点评

这个其实用脑子想想就知道,x是读一次指针,x[x]是读两次指针...  发表于 2012-2-22 11:12
回复

使用道具 举报

梦石
0
星屑
1002
在线时间
1270 小时
注册时间
2011-2-14
回帖
5388
发表于 2012-2-19 13:35:53 | 显示全部楼层
本帖最后由 R-零 于 2012-2-19 13:36 编辑
piaoy 发表于 2012-2-19 13:07
根据我的游戏需要,每个数值要算3次,再换下一组。实验:结果:带入后计算更快
结论(多次不同实验):$x ...


大概是前者是要重复获得数组吧,相当于两次计算
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部