Lua表格数据优化记录

2024/11 25 16:11

项目中使用了Unity+Lua,而策划表格数据使用的是一款开源的Excel转Lua的工具

https://github.com/zhangqi-ulua/XlsxToLua

这个转出来的数据,最大的问题在于 – 原始

一、内存

return {
  [1001] = {
    id = 100, 
    name = "name1",
    items = {
      [1]= { 
        itemid = 1,
        itemnum = 2,
      },
      [2]= { 
        itemid = 1,
        itemnum = 2,
      },
    },
  },
  [1002] = {
    id = 102, 
    name = "name2",
    items = {
      [1]= { 
        itemid = 1,
        itemnum = 2,
      },
      [2]= { 
        itemid = 1,
        itemnum = 2,
      },
    },
  },
}

大量的Key-Value结构,导致内存占用过高

二、易被修改

local items = require("items")
local item = items[1]
local itemId = item.id
item.id = 1002

改造方案

行转列

return {
  id = { 1001, 1002, 1003 ... },
  name = { "name1", "name2" ... },
}
注意:这样需要一个读取器,进行转换,示例:
local line = Config.Get(1001)
print(line.id)
print(line.name)

改造后的数据对比

一共改造了11张表,运行时内存对比:
改造前主城界面Lua占用内存:72.1M
改造前主城界面Lua占用内存:54.9M