我在 lua 中使用这些表的效率如何?

How efficient am I using these tables in lua?

所以我一直在编写一些 Lua 的脚本,在使用表格时我想制作类似于 "node" 或 "class"

的东西
local playerInfo = {} 
if player then
    local newPlayer = {NAME = name, HP = 10, DMG = 4}
    table.insert(playerInfo, newPlayer) 
end

for k, v in pairs(playerInfo) do
    print(v.NAME) 
end

这只是我正在做的一个例子,但是可以访问这样的信息吗?或者有没有更有效的方法?

在谈论效率时,必须区分代码维护和性能。在 Lua 中,与大多数语言一样,这两点是不同的。

总是很容易使用 pairs 而不是 ipairs,通过 table.insert 将元素附加到 table,通过 .. 连接字符串等。但是 这不是快速 运行 程序的方法。

每个 Lua 程序员都应该阅读一份文档:Lua Performance Tips by Roberto Ierusalimschy

您的代码:

  • 不要使用 table.insert,自行管理 table 大小和插入。
  • 您的 table 只有数组条目,因此请改用 ipairs
  • 避免无用的变量,尽可能就地构造(newPlayer)。
  • 使用 _ 作为未使用变量名称的占位符 (k)。

LuaJIT 由于编译器部分 f.e 的大量优化,还有一些其他规则。 (i)pairs有没有更慢的速度。