查找游戏中突然卡机问题小结
一。 查其原因主要是
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) 编辑 收藏 引用