虽然没有人回答
但是我终于找到问题答案了
我绘图时是使用SDL::Surface.trnasform_blit
我再它包装成SDL::Surface#draw
(反正要贴的Screen也就那么一个...)
把图拆开画和拼起来感觉差不多
不过这就是重点...
今天在偶然中使用了Ruby-prof来测程式的表现
发现SDL::Surface#transform_surface占了执行的40%以上
(其他40%是Delay 20%主程式 所以...)
而不是SDL::Surface.transform_blit这个方法
也就是说这个方法里有玄机
于是我找到了Ruby/SDL的Gem资料夹
在lib的sdl.rb中
有句很重要的transform_surface
代表了会产生新的物件
而且是每次要transform_blit时都会重新产生
于是对于大的图档就要花上更多时间来产生物件
(应该是要用才会alloc吧 我有弄错吗?)
所以改成只用一次的transfor_surface
再搭配上SDL::Surface.blit就大幅改善效能
(本来一圈24ms 现在只要6ms...)
各位要小心函式库本身的小缺陷...
还有80:20法则...
话说用Ruby刻一个RPG游戏会很怪吗?
不是用RGSS而是从无到有这样...