【发布时间】:2018-07-29 07:35:31
【问题描述】:
我对 LUA 有点陌生。所以我有一个游戏,我需要捕获实体并插入到表中。可能同时发生的最大可能实体表是 14。所以我读到基于数组的解决方案很好。
但我看到即使我们删除一些值,表大小也会增加,例如从 10 表值中删除索引 9 处的值,当我想插入表号 11 时,它不会自动改变大小。
例子:
local Table = {"hello", "hello", "hello", "hello", "hello", "hello", "hello", "hello", "hello", "hello"}
-- Current Table size = 10
-- Perform delete at index 9
Table[9] = nil
-- Have new Entity to insert
Table[#Table + 1] = "New Value"
-- The table size will grow by the time the game extend.
因此对于这种情况,在插入新表值时,内部具有 nil 值的基于数组的表是否会具有更好的性能,或者我应该使用键移入表中吗? 或者我应该坚持使用基于数组的表并在不使用表时执行完全清理?
【问题讨论】:
-
试试
table.remove(Table, 9) -
@EgorSkriptunoff 谢谢。嗯很有趣。实际上 table.remove 移动了值。我想我会坚持使用 table.remove,而不是将表值设置为 nil。由于表大小也减小了,因此测试内存使用情况略有改善。
标签: performance lua