查找游戏中突然卡机问题小结

本文总结了游戏运行过程中出现卡顿的原因,包括Lua局部表处理不当、频繁的字符转换操作、内存分配效率低下等问题,并提出了相应的优化方案,如采用对象池管理、使用更高效的字符串转换函数等。
查找游戏中突然卡机问题小结

一。 查其原因主要是
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方法,感觉比较烦,我们没有使用.

转载于:https://www.cnblogs.com/lancidie/archive/2011/06/09/2075977.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值