提高Lua代碼運行效率

  • 儘可能使用Local

Lua的預編譯器能把所有的local變量儲存在寄存器。這就使得Lua在獲取local變量時其效率十分的高。

  • table:避免rehash

Lua的表分爲兩個部分:數組array部分和哈希hash部分。數組部分包含所有從1到n的整數鍵,其他的所有鍵都儲存在哈希部分中。若數組和哈希表已經滿了,則會觸發一個再哈希rehash。再哈希的代價是高昂的。首先會在內存中分配一個新的長度的數組,然後將所有記錄再全部哈希一遍,將原來的記錄轉移到新數組中。新哈希表的長度是最接近於所有元素數目的2的乘方。如果你有很多非常多的很小的表需要創建時,你可以將其預先填充以避免rehash。

  • 字符串

所有的字符串在Lua中都只儲存一份拷貝。當新字符串出現時,Lua檢查是否有其相同的拷貝,若沒有則創建它,否則,指向這個拷貝。在使用..來連接字符串時會產生多份字符串,應用table來模擬buffer,然後concat得到最終字符串。

發佈了19 篇原創文章 · 獲贊 27 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章