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

我在lua中使用这些表的效率如何?,lua,lua-table,Lua,Lua Table,因此,我编写了一些Lua脚本,在使用表时,我想制作一些类似于“节点”或“类”的东西 这只是我正在做的一个例子,但是像这样访问信息可以吗?还是有更有效的方法 在谈到效率时,必须区分代码维护和性能。在Lua中,就像在大多数语言中一样,这两点是分开的 总是很容易使用对而不是ipairs,通过表将元素附加到表中。插入,通过连接字符串。,等等。但这不是快速运行程序的方法 每个Lua程序员都应该阅读一份文档: 您的代码: 不要使用表格。插入,自己管理表格大小和插入 您的表只有数组项,因此请改用ipairs

因此,我编写了一些Lua脚本,在使用表时,我想制作一些类似于“节点”或“类”的东西


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

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

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

每个Lua程序员都应该阅读一份文档:

您的代码:

  • 不要使用
    表格。插入
    ,自己管理表格大小和插入
  • 您的表只有数组项,因此请改用
    ipairs
  • 避免使用无用的变量,尽可能就地构造(
    newPlayer
  • 使用
    \uu
    作为未使用变量名(
    k
    )的占位符

由于编译器部分进行了大量优化,因此还有一些其他规则,例如,f.e.
(i)pairs
的速度要慢得多。

在本例中,最好使用
ipairs
而不是
pairs
。感谢您的输入。当您说“无用”变量时,您的意思是只执行类似于
table.insert(playerInfo,{NAME=NAME,HP=10,DMG=4})
的操作?我也会记得使用
。在一些循环中,我实际使用了
k
,但这是有意义的。对于
table.insert
如果我不知道我将在表中获得多少条目,我将如何管理大小插入?@krazyito65是的,我的意思是关于“无用”变量<代码>表格。insert
要求表格大小不包含O(1)的成本(请参阅)。此外,表可以按nil值设置孔,表大小请求将这些孔视为结束。将表大小存储为字段n并通过修改增加/减少它对用户来说是一项更大的工作,但更安全、更快。对未使用的变量使用u是一种可读性增强约定(以及代码检查警告抑制器)。在Lua中,唯一的性能提升是重复使用它。它就像其他变量一样。
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