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