我在 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
有没有更慢的速度。
所以我一直在编写一些 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
有没有更慢的速度。