我正在測驗 Lua (5.3) Harfang 以對比另一個框架的性能。用例是大量的精靈。我注意到一些惱人的幀率下降,但我找不到任何可以解釋它的模式。有時每秒會下降(暫停)2 或 3 次,有時幀率會在短時間內保持穩定,然后再次下降。
我在 Python 中嘗試了相同的例程,在Python中它完全沒問題......
有什么幫助嗎?(精靈的數量約為 3000 個物件,存盤在 Lua 表中)
uj5u.com熱心網友回復:
正如@LMD 所建議的,這是 Lua 垃圾收集器的一個典型問題:) 一個激進的解決方法可能是從主渲染回圈中顯式呼叫 GC:
while not hg.ReadKeyboard():Key(hg.K_Escape) do
hg.SetViewClear(0, hg.CF_Color | hg.CF_Depth, hg.Color.Black, 1, 0)
hg.SetViewRect(0, 0, 0, width, height)
dt = hg.TickClock()
dt_f = hg.time_to_sec_f(dt)
-- do your rendering stuff here with lots of objects
hg.Frame()
hg.UpdateWindow(window)
collectgarbage() -- prevent GC-induced frame drops
end
試試這個,幀率下降應該消失了。確實,Python 不會發生這種情況。
編輯
自 Lua5.4 發布以來,不再需要對 GC 進行顯式呼叫。Lua 5.4 發行說明如下:
new generational mode for garbage collection
世代模式表現出更好的表現。在 Harfang 中進行測驗時,幀率下降不再發生(至少在最明顯的用例中)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/533233.html
標籤:表现lua精灵帧率
上一篇:優化去除名字中敬語的功能
下一篇:避免創建重復的類實體
