设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1227|回复: 8
打印 上一主题 下一主题

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

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1140
在线时间
381 小时
注册时间
2010-10-9
帖子
386

开拓者

跳转到指定楼层
1
发表于 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 对于优质提问的奖励~

查看全部评分

Lv1.梦旅人

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

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1140
在线时间
381 小时
注册时间
2010-10-9
帖子
386

开拓者

3
 楼主| 发表于 2012-2-19 08:09:51 手机端发表。 | 只看该作者
自己顶一下。
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
280
在线时间
1374 小时
注册时间
2005-10-16
帖子
5113

贵宾

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

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1140
在线时间
381 小时
注册时间
2010-10-9
帖子
386

开拓者

5
 楼主| 发表于 2012-2-19 08:30:56 手机端发表。 | 只看该作者
亿万星辰 发表于 2012-2-19 08:16
这个快慢体会不到,只是看你写的顺手不顺手罢了。

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

使用道具 举报

Lv2.观梦者

梦石
0
星屑
280
在线时间
1374 小时
注册时间
2005-10-16
帖子
5113

贵宾

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

使用道具 举报

Lv2.观梦者

梦石
0
星屑
777
在线时间
1270 小时
注册时间
2011-2-14
帖子
5589
7
发表于 2012-2-19 09:23:42 | 只看该作者
t = Time.now
9999.times{
执行你想要的指令
}
p Time.now - t

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

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1140
在线时间
381 小时
注册时间
2010-10-9
帖子
386

开拓者

8
 楼主| 发表于 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
回复

使用道具 举报

Lv2.观梦者

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


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

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-1 13:09

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表