Tjakka5

Untitled

Aug 23rd, 2018
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.78 KB | None | 0 0
  1. -- Classes
  2. local class_1 = {}
  3. class_1.__index = class_1
  4. function class_1:func_1()
  5.    self.v = self.v + self.v
  6. end
  7.  
  8. local class_2 = setmetatable({}, class_1)
  9. class_2.__index = class_2
  10. function class_2:func_2()
  11.    self.v = self.v - self.v
  12. end
  13.  
  14. local class_3 = setmetatable({}, class_2)
  15. class_3.__index = class_3
  16. function class_3:func_3()
  17.    self.v = self.v * self.v
  18. end
  19.  
  20. -- Components
  21. local comp_1 = {}
  22. comp_1.objects = {}
  23. function comp_1.add(o)
  24.    comp_1.objects[#comp_1.objects + 1] = o
  25. end
  26. function comp_1.func_1(id)
  27.    local o = comp_1.objects[id]
  28.    o.v = o.v + o.v
  29. end
  30. function comp_1.update()
  31.    for i = 1, #comp_1.objects do
  32.       comp_1.func_1(i)
  33.    end
  34. end
  35.  
  36. local comp_2 = {}
  37. comp_2.objects = {}
  38. function comp_2.add(o)
  39.    comp_2.objects[#comp_2.objects + 1] = o
  40. end
  41. function comp_2.func_1(id)
  42.    local o = comp_2.objects[id]
  43.    o.v = o.v - o.v
  44. end
  45. function comp_2.update()
  46.    for i = 1, #comp_2.objects do
  47.       comp_2.func_1(i)
  48.    end
  49. end
  50.  
  51. local comp_3 = {}
  52. comp_3.objects = {}
  53. function comp_3.add(o)
  54.    comp_3.objects[#comp_3.objects + 1] = o
  55. end
  56. function comp_3.func_1(id)
  57.    local o = comp_3.objects[id]
  58.    o.v = o.v * o.v
  59. end
  60. function comp_3.update()
  61.    for i = 1, #comp_3.objects do
  62.       comp_3.func_1(i)
  63.    end
  64. end
  65.  
  66. -- Initial creation
  67. local objects = {}
  68. for i = 1, 5000000 do
  69.    local o = {v = 10}
  70.  
  71.    objects[i] = setmetatable(o, class_3)
  72.  
  73.    comp_1.add(o)
  74.    comp_2.add(o)
  75.    comp_3.add(o)
  76. end
  77.  
  78. -- Actual test
  79. local s1 = love.timer.getTime()
  80. for i = 1, #objects do
  81.    local o = objects[i]
  82.    o:func_1()
  83.    o:func_2()
  84.    o:func_3()
  85. end
  86. local e1 = love.timer.getTime()
  87.  
  88. local s2 = love.timer.getTime()
  89. comp_1.update()
  90. comp_2.update()
  91. comp_3.update()
  92. local e2 = love.timer.getTime()
  93.  
  94. print(e1 - s1)
  95. print(e2 - s2)
Advertisement
Add Comment
Please, Sign In to add comment