lua 代码效率测试 - pxqwxl/myLearnPoject GitHub Wiki

在写代码过程中经常会遇到for循环 下面是对for循环的一些效率测试 先执行10亿次空循环

local time1 = os.clock()
local a = 0
print(time1,"time1")

for i = 1, 100000000 do

end
print(os.clock()- time1,"time2")

用时大概只有0.3秒 当你在循环中执行 简单的变量赋值操作时或者判断时

for i = 1, 100000000 do a = 0 end

所用时间还是0.3秒这就说明赋值和判断几乎是不损耗什么时间的 但是 当你对a做累加时

for i = 1, 100000000 do a = a+1 end

当你用以下四种方式在扩大一百倍循环

local index = 0
for i = 1, 10000000000 do
    index = index + 1
end
print(os.clock()- time1,"time1",index)

这时用时是 12.106当你

local time2 = os.clock()
local index2 = 0 
for i = 1, 100000000 do
    for j = 1, 10 do 
        for k = 1, 10 do 
            index2 = index2 + 1
        end
    end
end
print(os.clock()- time2,"time2",index2)

这时用时是 10.78当你

local time3 = os.clock()
local index3 = 0 
for i = 1, 100000000 do
    for j = 1, 100 do 
        index3 = index3 + 1
    end
end
print(os.clock()- time3,"time3",index3)

这样加入一百次循环时 用时 9.147秒

local time4 = os.clock()
local index4 = 0 
for i = 1, 100000000 do
    for j = 1, 60 do 
        index4 = index4 + 1
    end
    for j = 1, 40 do 
        index4 = index4 + 1
    end
end
print(os.clock()- time4,"time4",index4)

这样用时 9.411秒

所以我的理解循环层数两层为最佳 能分一次循环尽量不要做两次循环 还有循环体内执行的代码操作一定要简化