Advertisement
Guest User

Untitled

a guest
Apr 20th, 2016
517
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.60 KB | None | 0 0
  1.  
  2. --prof(1,test_a1)
  3. function avg(fn,name)
  4.     local max, sum, results, D, avg, variance = 10, 0, {}, 0
  5.     for i=1,max do
  6.         local res = prof(1,fn) --fn x1000 times
  7.         sum = sum + res
  8.         results[i] = res
  9.     end
  10.     avg = math.floor( (sum / max) * 1000 + 0.5 ) / 1000
  11.     for i=1,max do
  12.         D = D + (results[i] - avg) * (results[i] - avg)
  13.     end
  14.     variance = math.floor( math.sqrt(D) * 1000 + 0.5) / 1000
  15.     print(tostring(name).." Avg Time: "..tostring(avg)..", Variance: "..tostring(variance))
  16. end
  17.  
  18.  
  19.  
  20.  
  21. a = {}
  22. b = {}
  23. for i=1,50000 do
  24.     a[i] = i
  25.     local random_key = string.char(math.random(97,122))..tostring(i)..string.char(math.random(97,122))..string.char(math.random(97,122))
  26.     b[random_key] = i
  27. end
  28.  
  29. --Avg Time: 3.895, Variance: 0.013
  30. function test_a1()
  31.     for i=1,50000 do
  32.         a[i] = a[i] + 1
  33.     end
  34. end
  35.  
  36. --Avg Time: 2.182, Variance: 0.013
  37. function test_a2()
  38.     local a = a
  39.     for i=1,50000 do
  40.         a[i] = a[i] + 1
  41.     end
  42. end
  43.  
  44. --a22 Avg Time: 2.177, Variance: 0.008
  45. function test_a22()
  46.     local a = a
  47.     for i=1,#a do
  48.         a[i] = a[i] + 1
  49.     end
  50. end
  51.  
  52. --a3 Avg Time: 3.67, Variance: 0.017
  53. function test_a3()
  54.     local a = a
  55.     for i,v in ipairs(a) do
  56.         a[i] = v + 1
  57.     end
  58. end
  59.  
  60. --a4 Avg Time: 4.494, Variance: 0.018
  61. function test_a4()
  62.     for i,v in ipairs(a) do
  63.         a[i] = v + 1
  64.     end
  65. end
  66.  
  67. --a5 Avg Time: 4.261, Variance: 0.012
  68. function test_a5()
  69.     for i,v in pairs(a) do
  70.         a[i] = v + 1
  71.     end
  72. end
  73.  
  74. --a6 Avg Time: 2.176, Variance: 0.009
  75. function test_a6()
  76.     local a = a
  77.     for i=1,#a do
  78.         local v = a[i] --now we have i and v as if use ipairs.
  79.         a[i] = v + 1 --here we are using local cache.
  80.     end
  81. end
  82.  
  83. --b1 Avg Time: 6.782, Variance: 0.23
  84. function test_b1()
  85.     for k,v in pairs(b) do
  86.         b[k] = v + 1
  87.     end
  88. end
  89.  
  90. --b2 Avg Time: 6.199, Variance: 0.159  
  91. function test_b2()
  92.     local b = b
  93.     for k,v in pairs(b) do
  94.         b[k] = v + 1
  95.     end
  96. end
  97.  
  98. --b3 Avg Time: 6.22, Variance: 0.271
  99. function test_b3()
  100.     local b = b
  101.     local pairs = pairs
  102.     for k,v in pairs(b) do
  103.         b[k] = v + 1
  104.     end
  105. end
  106.  
  107. local t = {
  108.     a = a, --stage 1
  109.     b = b,
  110.     x = {
  111.         y = {
  112.             z = {
  113.                 a = a, --stage 4
  114.                 b = b,
  115.             },
  116.         },
  117.     },
  118. }
  119.  
  120. --a7 Avg Time: 3.487, Variance: 0.013
  121. function test_a7()
  122.     local t = t
  123.     for i=1,#t.a do
  124.         t.a[i] = t.a[i] + 1
  125.     end
  126. end
  127.  
  128. --a8 Avg Time: 7.06, Variance: 0.015
  129. function test_a8()
  130.     local t = t
  131.     for i=1,#t.x.y.z.a do
  132.         t.x.y.z.a[i] = t.x.y.z.a[i] + 1
  133.     end
  134. end
  135.  
  136. --a9 Avg Time: 17.125, Variance: 0.04
  137. function test_a9()
  138.     local t = t
  139.     for i=1,#t.x.y.z.a do
  140.         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
  141.             t.x.y.z.a[i] = t.x.y.z.a[i] + 1
  142.         end
  143.     end
  144. end
  145.  
  146. -- a10 Avg Time: 4.636, Variance: 0.01
  147. function test_a10()
  148.     local t = t
  149.     for i=1,#t.x.y.z.a do
  150.         local aa = t.x.y.z.a
  151.         aa[i] = aa[i] + 1
  152.     end
  153. end
  154.  
  155. --a11 Avg Time: 2.779, Variance: 0.011
  156. function test_a11()
  157.     local t = t
  158.     for i=1,#t.a do
  159.         local aa = t.a
  160.         aa[i] = aa[i] + 1
  161.     end
  162. end
  163.  
  164. --a12 Avg Time: 3.371, Variance: 0.013
  165. function test_a12()
  166.     local t = t
  167.     for i=1,#t.a do
  168.         local aa = t.a
  169.         local cc = t.c -- does not exist!
  170.         aa[i] = aa[i] + 1
  171.     end
  172. end
  173.  
  174. --a13 Avg Time: 3.436, Variance: 0.008
  175. function test_a13()
  176.     local t = t
  177.     for i=1,#t.a do
  178.         local aa = t.a
  179.         local bb = t.b -- exists!
  180.         aa[i] = aa[i] + 1
  181.     end
  182. end
  183.  
  184. function test_all()
  185.     avg(test_a1,"a1")
  186.     avg(test_a2,"a2")
  187.     avg(test_a22,"a22")
  188.     avg(test_a3,"a3")
  189.     avg(test_a4,"a4")
  190.     avg(test_a5,"a5")
  191.     avg(test_a6,"a6")
  192.     avg(test_a7,"a7")
  193.     avg(test_a8,"a8")
  194.     avg(test_a9,"a9")
  195.     avg(test_a10,"a10")
  196.     avg(test_a11,"a11")
  197.     avg(test_a12,"a12")
  198.     avg(test_a13,"a13")
  199.     avg(test_b1,"b1")
  200.     avg(test_b2,"b2")
  201.     avg(test_b3,"b3")
  202. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement