LUA 打印的性能开销




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 会好的多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值