Luajit复制表格很慢。

在一个大的 Lua 脚本中,我需要复制几个表 dt:

for i=1,dt:nrow() do
    local r = {}
    for j=1,dt:ncol() do
        r[j] = dt[i][j]
    end
    rslt:append(r)
end

这些表大约有 50,000 行 x 25 列,主要包含双精度数字。使用 Luajit 所需的时间大约是 "标准" Lua 的 10 倍。在我做的所有其他计算/操作上,Luajit 都更快(1.5 到 3 倍)。

点赞
用户1442917
用户1442917

尽管这听起来有些傻,但尝试使用25个值来预分配r表:

local r = {0000000000000000000000000}

不幸地是,Lua API不允许预分配表,因此这是避免内部循环中的数组赋值引起重新分配的唯一方法。我的测试显示出明显的改进,但不会接近10倍(尽管我不使用您的方法,因此您的结果可能会有所不同)。

2015-06-29 18:53:50