local function fun1()
local t = {1,2,3,4,5,6,7,8,9,0}
for i = 1, 1000000 do
print(table.concat(t))
end;
end;
local function fun2()
local t = {"1","2","3","4","5","6","7","8","9","0"}
for i = 1, 1000000 do
print(table.concat(t))
end;
end;
local function fun3()
local t = {0,1,2,3,4,5,6,7,8,9}
for i = 1, 1000000 do
print(t[1] * 1000000000
+ t[2] * 100000000
+ t[3] * 10000000
+ t[4] * 1000000
+ t[5] * 100000
+ t[6] * 10000
+ t[7] * 1000
+ t[8] * 100
+ t[9] * 10
+ t[10])
end
end;
local function fun4()
local t = {1,2,3,4,5,6,7,8,9,0}
for i = 1, 1000000 do
print(
string.format("%d%d%d%d%d%d%d%d%d%d",
t[1], t[2], t[3], t[4], t[5],
t[6], t[7], t[8], t[9], t[10])
)
end
end
local function fun5()
local t = {1,2,3,4,5,6,7,8,9,0}
for i = 1, 1000000 do
print(t[1] .. t[2] .. t[3] .. t[4] .. t[5] .. t[6] .. t[7] .. t[8] .. t[9] .. t[10]);
end;
end
local function fun6()
local t = {1,2,3,4,5,6,7,8,9,0}
for i = 1, 1000000 do
for j = 1, 10 do
io.write(t[j])
end;
io.write("\n");
end;
end;
local function fun7()
local t = {1,2,3,4,5,6,7,8,9,0}
local data = {}
for i = 1, 1000000 do
table.insert(data, string.format("%d%d%d%d%d%d%d%d%d%d",
t[1], t[2], t[3], t[4], t[5],
t[6], t[7], t[8], t[9], t[10])
)
end;
print(table.concat(data, "\n"));
end;
local function fun8()
local t = {1,2,3,4,5,6,7,8,9,0}
local data = {}
for i = 1, 1000000 do
table.insert(data, table.concat(t))
end;
print(table.concat(data, "\n"));
end;
-- 运行结果
local o = os.time();
-- fun1(); -- 5.6s
-- fun2(); -- 0.7s
-- fun3(): -- 1.2s
-- fun4(); -- 1.8s
-- fun5(); -- 5.5s
-- fun6(); -- 6.6s
-- fun7(); -- 1.5s
-- fun8(); -- 5.2s
print("时间开销" .. (os.time() - o) .. "秒");
得出结论. 数据量不大的时候 table.concat 其实 和 ".." 性能差不多.
大部分开销会损耗在 tostring 上, 如果不能事先进行转换, 使用 string.format 会好的多