【发布时间】:2014-06-09 03:03:48
【问题描述】:
我有一个关于访问 Lua 表中的数据的问题。
比如说,有一个像下面这样的大 Lua 表:
tbl = {
{
blockIdx = 5,
key1 = "val1",
key2 = "val2",
...
},
{
blockIdx = 30,
key1 = "val11",
key2 = "val12",
...
},
{
blockIdx = 83,
key1 = "val21",
key2 = "val22",
...
},
...
}
现在我想找到blockIdx 所在的块之一,例如38。
所以通常情况下,我想使用for 来查找块:
for k,v in pairs(tbl) do
if v.blockIdx == 38 then
blahFunction(v)
end
end
但我认为这不是一个好主意,尤其是对于大桌子。
所以我稍微修改了一下表格:
tbl = {
[5] = {
key1 = "val1",
key2 = "val2",
...
},
[30] = {
key1 = "val11",
key2 = "val12",
...
},
[83] = {
key1 = "val21",
key2 = "val22",
...
},
...
}
然后我可以轻松地用一行访问我的块:
blahFunction(tbl[38])
所以我的问题是,两种方法的性能有什么不同吗?
也许在做 tbl[38] 实际上在 Lua 中做了一个 for 循环?
或者就像 C/C++ 中的数组一样,我们可以使用 [ ] 直接访问内存,而无需使用 for 循环,
女巫显然有更好的表现。
【问题讨论】:
标签: performance lua lua-table