面试小结(三) 使用lua的一些注意事项及优化

1.#table 可以用来判断一个数组的长度,但需要注意的是,若table中包含nil,则不可使用。

2.table.sort同理,需要排序的table必须是1到n连续的,中间不能有nil。

3.尽量使用局部变量,函数function也是如此,因为在lua里函数也是一个变量。局部变量的存取会更快,且生命周期外就会被释放。

4.避免使用table.insert()
方法1:

local a = {}
local table_insert = table.insert
for i = 1,100 do
   table_insert( a, i )
end

方法2:

local a = {}
for i = 1,100 do
   a[#a+1] = i
end

方法3:

local a = {}
for i = 1,100 do
   a[i] = i
end

推荐使用方法3。其中方法3远优于1,2。而方法1略优于方法2。

5.关于for循环的一个测试(具体原理不知= =)
test1:

    local a = {}
    for i = 1,1000 do
       a[i] = i
    end

    for i = 1,#a do
        print(a[i])
    end

test2:

    local a = {}
    for i = 1,1000 do
       a[i] = i
    end

    local length = #a
    for i = 1,length do
        print(a[i])
    end

test3:

    local a = {}
    for i = 1,1000 do
       a[i] = i
    end

    for k,v in pairs(a) do
        print(v)
    end

test4:

    local a = {}
    for i = 1,1000 do
       a[i] = i
    end

    for k,v in ipairs(a) do
        print(v)
    end

说说结果吧,所需时间上4>3>2>1。居然1是最优的。我原以为2应该优于1。不知为何是这种结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值