Project1

标题: 变量读取速度的请教 [打印本页]

作者: piaoy    时间: 2012-2-17 21:03
标题: 变量读取速度的请教
在游戏中要用到某一个值很多次,那么是先把它带入一个局部变量用起来快呐,还是每次用到就直接读取快呐?
比如
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

$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                      #还是这样快???
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
总之就是想问问局部变量读取速度和很深的变量读取速度有没有区别。dsu_plus_rewardpost_czw
作者: z12067010    时间: 2012-2-17 21:44
没看懂,详细点或者来个图怎么样
作者: piaoy    时间: 2012-2-19 08:09
自己顶一下。
作者: 亿万星辰    时间: 2012-2-19 08:16
这个快慢体会不到,只是看你写的顺手不顺手罢了。
作者: piaoy    时间: 2012-2-19 08:30
亿万星辰 发表于 2012-2-19 08:16
这个快慢体会不到,只是看你写的顺手不顺手罢了。

我晓得这个体会不到,但是如果这段脚本要大量使用的话,是不是还会有点区别?         
作者: 亿万星辰    时间: 2012-2-19 08:41
你可以加个循环100000次试试看……
作者: R-零    时间: 2012-2-19 09:23
t = Time.now
9999.times{
执行你想要的指令
}
p Time.now - t

你可以试下比较时间哦
作者: piaoy    时间: 2012-2-19 13:07
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
作者: R-零    时间: 2012-2-19 13:35
本帖最后由 R-零 于 2012-2-19 13:36 编辑
piaoy 发表于 2012-2-19 13:07
根据我的游戏需要,每个数值要算3次,再换下一组。实验:结果:带入后计算更快
结论(多次不同实验):$x ...


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




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1