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

Project1

 找回密码
 注册会员
搜索
楼主: 3694260ac
打印 上一主题 下一主题

新人初到,写了一些小脚本,问些问题,谢谢!!!

 关闭 [复制链接]

Lv3.寻梦者

孤独守望

梦石
0
星屑
3133
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

31
发表于 2008-5-17 21:16:34 | 只看该作者
还有一个很SB的问题。把press改成trigger。一次按键可能触发N次press。试一下是不是按住方向键不放就会引起CPU和内存爆升。
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

32
发表于 2008-5-17 21:16:44 | 只看该作者
以下引用3694260ac于2008-5-17 12:58:46的发言:

@num小一些没问题,但是按键移动后看任务管理器Game.exe的内存占用量在增加,改while后不会有问题

真的嘿!
refresh 的for 居然真的会时内存缓慢上升...
while就没事

有意思   不过不知为什么....
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
6 小时
注册时间
2008-5-17
帖子
29
33
 楼主| 发表于 2008-5-17 21:20:26 | 只看该作者
是很奇怪,正常来说,一个局部变量不应该影响到外面的
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1265
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

34
发表于 2008-5-17 21:27:58 | 只看该作者
據說:
for i in 0..10
end
本質是:
i = nil
[0,1,2,3,4,5,6,7,8,9,10].each do |x|
i = x
end


while
end
的本質是
begin
end until ...


以上是否爲眞請大家去看源碼...
系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv3.寻梦者

孤独守望

梦石
0
星屑
3133
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

35
发表于 2008-5-17 21:29:49 | 只看该作者
以下引用禾西于2008-5-17 13:27:58的发言:

據說:
for i in 0..10
end
本質是:
i = nil
[0,1,2,3,4,5,6,7,8,9,10].each do |x|
i = x
end



while
end
的本質是
begin
end until ...


以上是否爲眞請大家去看源碼...

链表的each?!爆寒……还有请禾西扣我350分重新加到这个帖子的悬赏上,LZ的认可太早了
版主对此帖的评论:『OK』,积分『-350』。这些被扣积分的一半会用于对本帖正确答案的悬赏。
系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
6 小时
注册时间
2008-5-17
帖子
29
36
 楼主| 发表于 2008-5-17 21:32:46 | 只看该作者
LS太认真了...呵呵
其实我也想知道原因....不过这方面的资料似乎比较难搞
版主对此帖的认可:『加回追加分』,积分『+175』。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

37
发表于 2008-5-17 21:54:27 | 只看该作者
以下引用禾西于2008-5-17 13:27:58的发言:
    ... ...

是的


  1. For ... In

  2. Earlier we said that the only built-in Ruby looping primitives were while and until. What's this ``for'' thing, then? Well, for is almost a lump of syntactic sugar. When you write

  3. for aSong in songList
  4.   aSong.play
  5. end

  6. Ruby translates it into something like:

  7. songList.each do |aSong|
  8.   aSong.play
  9. end

  10. The only difference between the for loop and the each form is the scope of local variables that are defined in the body
复制代码

系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
46
在线时间
10 小时
注册时间
2007-5-27
帖子
2558

第1届Title华丽大赛新人奖

38
发表于 2008-5-17 22:18:45 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
6 小时
注册时间
2008-5-17
帖子
29
39
 楼主| 发表于 2008-5-17 23:24:52 | 只看该作者
通过楼上几位的观点,我做了一些小试验,我觉得是不是这样的:
先看一个程序:
@num = 10
def aa
  k = 0
  loop do
    array = [0,1,2,3,4,5,6,7,8,9]
    k += 1
    if k%100 == 0
      k = 0
      p 1
    end
  end
end
aa

这个里面有个数组array,运行后表明array应该是不断申请的,并没有完全释放再看一个程序:
@num = 10
def aa
  k = 0
  loop do
    k += 1
    if k%1000 == 0
      k = 0
      p 1
    end
  end
end
aa

用了%1000,但是运行后内存并没有增加

如上几楼所说的:
for i in 0..10
end
本質是:
i = nil
[0,1,2,3,4,5,6,7,8,9,10].each do |x|
i = x
end

说明for循环导致内存的增大是由于[0,1,2,3,4,5,6,7,8,9,10],不断调用而没有完全的释放掉

之后又出现这个问题:
看程序:
@num = 10
def aa
  k = 0
  loop do
    array = [0,1,2,3,4,5,6,7,8,9]
    k += 1
    if k == 5000000
      break
    end
  end
  loop do
    p 1
  end
end
aa

在出现 1 之前,内存在增加,不过随后也在释放,说明RUBY里面数组还是有释放处理的.......

不知道是不是随着时间的推移或者数组量的过大,RUBY还是会进行一些内部处理来释放内存的



回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
6 小时
注册时间
2008-5-17
帖子
29
40
 楼主| 发表于 2008-5-17 23:27:39 | 只看该作者
这些感觉已经涉及RUBY编译器内部处理的事了.....
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-7-29 23:05

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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