查找游戲中突然卡機問題小結
一。 查其原因主要是
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.shnenglu.com/flipcode/archive/2009/12/10/102902.html
三。還有就是頻率調用字符轉換函數,類似sprintf("%s%d", "sdfdf", 2100 )也是一個非常消耗的地方!
解決辦法就是用itoa以及atoi來轉換
四。哦,還有就是lua的回收也是消耗很大,簡單辦法就是用它提供的分步回收(不在同一幀收完),看到云風博客提到分state方法,感覺比較煩,我們沒有使用.