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。不知为何是这种结果。