花生肉泥 Blog

Lua循环优化

2016/11/24 Share

关于大量字符串连接 (速度提升100倍)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-- 大字符串连接中 避免用..连接,应该用table来模拟buffer,然后concat
a = os.clock()
local s = ''
for i=1,100000 do
s = s .. 'a'
end
b = os.clock()
print(b-a) -- 1.708秒

a = os.clock()
local s = ''
local t = {}
for i=1,100000 do
t[#t+1] = 'a'
end
s = table.concat(t,'')
b = os.clock()
print(b-a) -- 0.011秒

关于创建大量小size的表(大概速度提升1倍)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-- 创建大量小size表时,应该先填充好表的大小
a = os.clock()
for i=1,2000000 do
local a = {}
a[1] = 1;a[2] = 2;a[3] = 3
end
b = os.clock()
print(b-a) -- 1.361秒

a = os.clock()
for i=1,2000000 do
local a = {0,0,0}
a[1] = 1;a[2] = 2;a[3] = 3
end
b = os.clock()
print(b-a) -- 0.623秒
CATALOG
  1. 1. 关于大量字符串连接 (速度提升100倍)
  2. 2. 关于创建大量小size的表(大概速度提升1倍)