Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --prof(1,test_a1)
- function avg(fn,name)
- local max, sum, results, D, avg, variance = 10, 0, {}, 0
- for i=1,max do
- local res = prof(1,fn) --fn x1000 times
- sum = sum + res
- results[i] = res
- end
- avg = math.floor( (sum / max) * 1000 + 0.5 ) / 1000
- for i=1,max do
- D = D + (results[i] - avg) * (results[i] - avg)
- end
- variance = math.floor( math.sqrt(D) * 1000 + 0.5) / 1000
- print(tostring(name).." Avg Time: "..tostring(avg)..", Variance: "..tostring(variance))
- end
- a = {}
- b = {}
- for i=1,50000 do
- a[i] = i
- local random_key = string.char(math.random(97,122))..tostring(i)..string.char(math.random(97,122))..string.char(math.random(97,122))
- b[random_key] = i
- end
- --Avg Time: 3.895, Variance: 0.013
- function test_a1()
- for i=1,50000 do
- a[i] = a[i] + 1
- end
- end
- --Avg Time: 2.182, Variance: 0.013
- function test_a2()
- local a = a
- for i=1,50000 do
- a[i] = a[i] + 1
- end
- end
- --a22 Avg Time: 2.177, Variance: 0.008
- function test_a22()
- local a = a
- for i=1,#a do
- a[i] = a[i] + 1
- end
- end
- --a3 Avg Time: 3.67, Variance: 0.017
- function test_a3()
- local a = a
- for i,v in ipairs(a) do
- a[i] = v + 1
- end
- end
- --a4 Avg Time: 4.494, Variance: 0.018
- function test_a4()
- for i,v in ipairs(a) do
- a[i] = v + 1
- end
- end
- --a5 Avg Time: 4.261, Variance: 0.012
- function test_a5()
- for i,v in pairs(a) do
- a[i] = v + 1
- end
- end
- --a6 Avg Time: 2.176, Variance: 0.009
- function test_a6()
- local a = a
- for i=1,#a do
- local v = a[i] --now we have i and v as if use ipairs.
- a[i] = v + 1 --here we are using local cache.
- end
- end
- --b1 Avg Time: 6.782, Variance: 0.23
- function test_b1()
- for k,v in pairs(b) do
- b[k] = v + 1
- end
- end
- --b2 Avg Time: 6.199, Variance: 0.159
- function test_b2()
- local b = b
- for k,v in pairs(b) do
- b[k] = v + 1
- end
- end
- --b3 Avg Time: 6.22, Variance: 0.271
- function test_b3()
- local b = b
- local pairs = pairs
- for k,v in pairs(b) do
- b[k] = v + 1
- end
- end
- local t = {
- a = a, --stage 1
- b = b,
- x = {
- y = {
- z = {
- a = a, --stage 4
- b = b,
- },
- },
- },
- }
- --a7 Avg Time: 3.487, Variance: 0.013
- function test_a7()
- local t = t
- for i=1,#t.a do
- t.a[i] = t.a[i] + 1
- end
- end
- --a8 Avg Time: 7.06, Variance: 0.015
- function test_a8()
- local t = t
- for i=1,#t.x.y.z.a do
- t.x.y.z.a[i] = t.x.y.z.a[i] + 1
- end
- end
- --a9 Avg Time: 17.125, Variance: 0.04
- function test_a9()
- local t = t
- for i=1,#t.x.y.z.a do
- if t ~= nil and t.x ~= nil and t.x.y ~= nil and t.x.y.z ~= nil and t.x.y.z.a ~= nil then
- t.x.y.z.a[i] = t.x.y.z.a[i] + 1
- end
- end
- end
- -- a10 Avg Time: 4.636, Variance: 0.01
- function test_a10()
- local t = t
- for i=1,#t.x.y.z.a do
- local aa = t.x.y.z.a
- aa[i] = aa[i] + 1
- end
- end
- --a11 Avg Time: 2.779, Variance: 0.011
- function test_a11()
- local t = t
- for i=1,#t.a do
- local aa = t.a
- aa[i] = aa[i] + 1
- end
- end
- --a12 Avg Time: 3.371, Variance: 0.013
- function test_a12()
- local t = t
- for i=1,#t.a do
- local aa = t.a
- local cc = t.c -- does not exist!
- aa[i] = aa[i] + 1
- end
- end
- --a13 Avg Time: 3.436, Variance: 0.008
- function test_a13()
- local t = t
- for i=1,#t.a do
- local aa = t.a
- local bb = t.b -- exists!
- aa[i] = aa[i] + 1
- end
- end
- function test_all()
- avg(test_a1,"a1")
- avg(test_a2,"a2")
- avg(test_a22,"a22")
- avg(test_a3,"a3")
- avg(test_a4,"a4")
- avg(test_a5,"a5")
- avg(test_a6,"a6")
- avg(test_a7,"a7")
- avg(test_a8,"a8")
- avg(test_a9,"a9")
- avg(test_a10,"a10")
- avg(test_a11,"a11")
- avg(test_a12,"a12")
- avg(test_a13,"a13")
- avg(test_b1,"b1")
- avg(test_b2,"b2")
- avg(test_b3,"b3")
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement