Lua表格C API

我知道: http://lua-users.org/wiki/SimpleLuaApiExample

它展示了如何逐个构建一个表格(键,值)对的条目。

假设我想构建一个巨大的表格(比如一个包含1000个条目的表格,其中键和值都是字符串),在lua中有一种快速的方法可以做到这一点吗(而不是每个条目4次函数调用:

推
键
值
rawset

原文链接 https://stackoverflow.com/questions/2797335

点赞
stackoverflow用户148870
stackoverflow用户148870

很遗憾,对于关联表(字符串键,非连续整数键),没有相应的优化函数。

对于数组类型表(使用常规的从 1 到 N 的整数索引),有一些性能优化的函数,例如 lua_rawgetilua_rawsetihttp://www.lua.org/pil/27.1.html

2010-05-09 10:31:45
stackoverflow用户107090
stackoverflow用户107090

对于字符串键,可以使用 lua_setfield

2010-05-09 13:47:58
stackoverflow用户41661
stackoverflow用户41661

你所写的是解决这个问题的快速方式。Lua表格的工程设计非常出色,速度足够快,不需要某种虚假的“提示”来说明“我期望这个表格随着元素数量增加而变为1000个元素”。

2010-05-09 15:42:30
stackoverflow用户298661
stackoverflow用户298661

你可以使用 createtable 来创建已经具有所需插槽数量的表。 但是,在那之后,除了以下方式,没有更快的方法:

for(int i = 0; i < 1000; i++) { 
    lua_push... // 键
    lua_push... // 值
    lua_rawset(L, tableindex);
}
2010-05-09 15:45:24