在更大的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行×25列,主要包含双打。 luajit大约需要10倍"标准" LUA。在我之前做的所有其他计算/操作中,luajit更快(1.5到3次)。
答案 0 :(得分:0)
听起来很愚蠢,请尝试使用25个值预先分配r
表:
local r = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
不幸的是,Lua API不允许预分配表,因此这是避免内循环中数组赋值引起的重新分配的唯一方法。我的测试显示出明显的改善,但不接近10倍(虽然我没有使用你的方法,所以你的结果可能会有所不同)。