mirror of
https://github.com/BlackMATov/evolved.lua.git
synced 2026-09-18 09:34:36 +07:00
first chunk tree impl
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
require 'develop.example'
|
||||
require 'develop.unbench'
|
||||
require 'develop.untests'
|
||||
@@ -1 +1,14 @@
|
||||
local evolved = require 'evolved'
|
||||
|
||||
local registry = evolved.registry()
|
||||
|
||||
local fragments = {
|
||||
position = registry:entity(),
|
||||
velocity = registry:entity(),
|
||||
}
|
||||
|
||||
do
|
||||
local entity = registry:entity()
|
||||
entity:insert(fragments.position)
|
||||
entity:insert(fragments.velocity)
|
||||
end
|
||||
|
||||
+17
-1
@@ -1,4 +1,5 @@
|
||||
local evolved = require 'evolved'
|
||||
local utilities = require 'develop.utilities'
|
||||
|
||||
---@param name string
|
||||
---@param func fun(...):...
|
||||
@@ -6,7 +7,7 @@ local evolved = require 'evolved'
|
||||
local function describe(name, func, ...)
|
||||
collectgarbage('stop')
|
||||
|
||||
print(string.format('- %s ...', name))
|
||||
print(string.format('| unbench | %s ...', name))
|
||||
|
||||
local start_s = os.clock()
|
||||
local start_kb = collectgarbage('count')
|
||||
@@ -23,3 +24,18 @@ local function describe(name, func, ...)
|
||||
|
||||
collectgarbage('restart')
|
||||
end
|
||||
|
||||
describe('memory footprint of 1k entities', function()
|
||||
local registry = evolved.registry()
|
||||
for _ = 1, 1000 do registry:entity() end
|
||||
end)
|
||||
|
||||
describe('memory footprint of 10k entities', function()
|
||||
local registry = evolved.registry()
|
||||
for _ = 1, 10000 do registry:entity() end
|
||||
end)
|
||||
|
||||
describe('memory footprint of 100k entities', function()
|
||||
local registry = evolved.registry()
|
||||
for _ = 1, 100000 do registry:entity() end
|
||||
end)
|
||||
|
||||
+71
-1
@@ -1,4 +1,5 @@
|
||||
local evolved = require 'evolved'
|
||||
local utilities = require 'develop.utilities'
|
||||
|
||||
---@param name string
|
||||
---@param func fun(...):...
|
||||
@@ -6,7 +7,7 @@ local evolved = require 'evolved'
|
||||
local function describe(name, func, ...)
|
||||
collectgarbage('stop')
|
||||
|
||||
print(string.format('- %s ...', name))
|
||||
print(string.format('| untests | %s ...', name))
|
||||
|
||||
local start_s = os.clock()
|
||||
local start_kb = collectgarbage('count')
|
||||
@@ -23,3 +24,72 @@ local function describe(name, func, ...)
|
||||
|
||||
collectgarbage('restart')
|
||||
end
|
||||
|
||||
describe('random entity:insert', function()
|
||||
for _ = 1, 1000 do
|
||||
local registry = evolved.registry()
|
||||
|
||||
---@type evolved.entity[]
|
||||
local all_fragments = {}
|
||||
local all_fragment_count = math.random(1, 10)
|
||||
for i = 1, all_fragment_count do all_fragments[i] = registry:entity() end
|
||||
|
||||
for _ = 1, 100 do
|
||||
local e1, e2 = registry:entity(), registry:entity()
|
||||
|
||||
---@type evolved.entity[]
|
||||
local insert_fragments = {}
|
||||
local insert_fragment_count = math.random(1, 10)
|
||||
for i = 1, insert_fragment_count do insert_fragments[i] = all_fragments[math.random(1, all_fragment_count)] end
|
||||
|
||||
utilities.shuffle_array(insert_fragments)
|
||||
for _, fragment in ipairs(insert_fragments) do e1:insert(fragment) end
|
||||
|
||||
utilities.shuffle_array(insert_fragments)
|
||||
for _, fragment in ipairs(insert_fragments) do e2:insert(fragment) end
|
||||
|
||||
assert(e1.chunk == e2.chunk)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
describe('random entity:remove', function()
|
||||
for _ = 1, 1000 do
|
||||
local registry = evolved.registry()
|
||||
|
||||
---@type evolved.entity[]
|
||||
local all_fragments = {}
|
||||
local all_fragment_count = math.random(1, 10)
|
||||
for i = 1, all_fragment_count do all_fragments[i] = registry:entity() end
|
||||
|
||||
for _ = 1, 100 do
|
||||
local e1, e2 = registry:entity(), registry:entity()
|
||||
|
||||
---@type evolved.entity[]
|
||||
local insert_fragments = {}
|
||||
local insert_fragment_count = math.random(1, 10)
|
||||
for i = 1, insert_fragment_count do insert_fragments[i] = all_fragments[math.random(1, all_fragment_count)] end
|
||||
|
||||
---@type evolved.entity[]
|
||||
local remove_fragments = {}
|
||||
local remove_fragment_count = math.random(1, 10)
|
||||
for i = 1, remove_fragment_count do remove_fragments[i] = all_fragments[math.random(1, all_fragment_count)] end
|
||||
|
||||
utilities.shuffle_array(insert_fragments)
|
||||
for _, fragment in ipairs(insert_fragments) do e1:insert(fragment) end
|
||||
|
||||
utilities.shuffle_array(insert_fragments)
|
||||
for _, fragment in ipairs(insert_fragments) do e2:insert(fragment) end
|
||||
|
||||
assert(e1.chunk == e2.chunk)
|
||||
|
||||
utilities.shuffle_array(remove_fragments)
|
||||
for _, fragment in ipairs(remove_fragments) do e1:remove(fragment) end
|
||||
|
||||
utilities.shuffle_array(remove_fragments)
|
||||
for _, fragment in ipairs(remove_fragments) do e2:remove(fragment) end
|
||||
|
||||
assert(e1.chunk == e2.chunk)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
local utilities = {}
|
||||
|
||||
---@param vs any[]
|
||||
function utilities.shuffle_array(vs)
|
||||
for i = 1, #vs do
|
||||
local j = math.random(i, #vs)
|
||||
vs[i], vs[j] = vs[j], vs[i]
|
||||
end
|
||||
end
|
||||
|
||||
return utilities
|
||||
Reference in New Issue
Block a user