版本告示:本文與早期版本的 Lua 有關。自 Lua 5.1 起,增量垃圾收集已可使用。
舊版本的 Lua(5.1 之前的版本)不太適合做為即時程式的主程式巢狀迴圈。原因並非 Lua 執行速度慢,事實上,它的虛擬機器執行速度可能是所有腳本語言中數一數二快的。問題出在標記並清除的垃圾收集機制(GC),它需要 CPU 時間區塊,其長短與所配置的物件數量成比例。5.1 版才會用即時增量系統取代標記並清除的收集器(請見論文即時不複製式垃圾收集 [1])。在舊版本的 Lua 中,仍有數種方法可以在即時程式中妥善運用 Lua
- 只在初始化時使用 Lua。使用 Lua 腳本來初始化 C 結構,然後關閉或停止使用 Lua 內容。
- 在主程式巢狀迴圈中使用 Lua,但不要配置物件。小心撰寫程式碼,就有可能在主程式巢狀迴圈中消除物件配置,這種情況下就無需執行 GC。
- 保持配置物件的數量低,而且每執行一次主程式巢狀迴圈就執行一次 GC。對少數物件來說,此方法或許可行。請注意,標準函式庫也包括在計算中,因此最好移除未使用的函式。
另請參閱:最佳化秘訣、垃圾收集/即時遊戲中的垃圾收集、分析 Lua 程式碼
最新變更 · 喜好設定
編輯 · 歷史記錄
上次編輯時間為 2008 年 10 月 25 日下午 4:53 分(格林威治標準時間)(差異)