posts - 72,  comments - 4,  trackbacks - 0
查找游戏中突然卡机问题小结

一。 查其原因主要是
lua局部表引起的,类似这样:
local tt[] = {}
tt[1] = {1,2,3}
tt[2] = {1,2}
...

总共就20个元素左右,并不多,这样的表格在极端情况下偶然发生消耗几百毫秒(在我们测试机上似乎是500ms左右)


二。 是new
  脚本有些类似调用
for i=100, 5000, 1
     。。。
     addkeypos(i, p1, p2)
end
由于程序在addkeypos函数中使用了new,这导致有时偶然有些new消耗10多ms,
4000次下来累计偶然会占高。解决办法就是让程序去掉new处理成池的方式, 具体参考我的另一文章:
http://www.cppblog.com/flipcode/archive/2009/12/10/102902.html

三。还有就是频率调用字符转换函数,类似sprintf("%s%d",  "sdfdf", 2100 )也是一个非常消耗的地方!
  解决办法就是用itoa以及atoi来转换

四。哦,还有就是lua的回收也是消耗很大,简单办法就是用它提供的分步回收(不在同一帧收完),看到云风博客提到分state方法,感觉比较烦,我们没有使用.
posted on 2009-12-10 10:23 flipcode 阅读(179) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理