mirror of
https://github.com/BlackMATov/evolved.lua.git
synced 2025-12-13 19:48:00 +07:00
103 lines
2.8 KiB
Lua
103 lines
2.8 KiB
Lua
local evo = require 'evolved'
|
|
local basics = require 'develop.basics'
|
|
|
|
evo.debug_mode(false)
|
|
|
|
local N = 10000
|
|
|
|
print '----------------------------------------'
|
|
|
|
basics.describe_bench(string.format('Process Benchmarks: Evolved AoS Processing | %d entities', N),
|
|
function(w)
|
|
evo.process(w)
|
|
end,
|
|
|
|
function()
|
|
local wf = evo.builder()
|
|
:set(evo.DESTRUCTION_POLICY, evo.DESTRUCTION_POLICY_DESTROY_ENTITY)
|
|
:spawn()
|
|
|
|
local pf = evo.builder():set(wf):spawn()
|
|
local vf = evo.builder():set(wf):spawn()
|
|
|
|
evo.multi_spawn(N, {
|
|
[wf] = true,
|
|
[pf] = { x = 0, y = 0, z = 0, w = 0 },
|
|
[vf] = { x = 0, y = 0, z = 0, w = 0 },
|
|
})
|
|
|
|
evo.builder()
|
|
:set(wf)
|
|
:set(evo.GROUP, wf)
|
|
:set(evo.QUERY, evo.builder():set(wf):include(pf, vf):spawn())
|
|
:set(evo.EXECUTE, function(chunk, _, entity_count)
|
|
local ps, vs = chunk:components(pf, vf)
|
|
|
|
for i = 1, entity_count do
|
|
local p, s = ps[i], vs[i]
|
|
p.x = p.x + s.x
|
|
p.y = p.y + s.y
|
|
end
|
|
end)
|
|
:spawn()
|
|
|
|
return wf
|
|
end,
|
|
|
|
function(w)
|
|
evo.destroy(w)
|
|
end)
|
|
|
|
basics.describe_bench(string.format('Process Benchmarks: Evolved SoA Processing | %d entities', N),
|
|
function(w)
|
|
evo.process(w)
|
|
end,
|
|
|
|
function()
|
|
local wf = evo.builder()
|
|
:set(evo.DESTRUCTION_POLICY, evo.DESTRUCTION_POLICY_DESTROY_ENTITY)
|
|
:spawn()
|
|
|
|
local pxf = evo.builder():set(wf):spawn()
|
|
local pyf = evo.builder():set(wf):spawn()
|
|
local pzf = evo.builder():set(wf):spawn()
|
|
local pwf = evo.builder():set(wf):spawn()
|
|
local vxf = evo.builder():set(wf):spawn()
|
|
local vyf = evo.builder():set(wf):spawn()
|
|
local vzf = evo.builder():set(wf):spawn()
|
|
local vwf = evo.builder():set(wf):spawn()
|
|
|
|
evo.multi_spawn(N, {
|
|
[wf] = true,
|
|
[pxf] = 0,
|
|
[pyf] = 0,
|
|
[pzf] = 0,
|
|
[pwf] = 0,
|
|
[vxf] = 0,
|
|
[vyf] = 0,
|
|
[vzf] = 0,
|
|
[vwf] = 0,
|
|
})
|
|
|
|
evo.builder()
|
|
:set(wf)
|
|
:set(evo.GROUP, wf)
|
|
:set(evo.QUERY, evo.builder():set(wf):include(pxf, pyf, vxf, vyf):spawn())
|
|
:set(evo.EXECUTE, function(chunk, _, entity_count)
|
|
local pxs, pys = chunk:components(pxf, pyf)
|
|
local vxs, vys = chunk:components(vxf, vyf)
|
|
|
|
for i = 1, entity_count do
|
|
pxs[i] = pxs[i] + vxs[i]
|
|
pys[i] = pys[i] + vys[i]
|
|
end
|
|
end)
|
|
:spawn()
|
|
|
|
return wf
|
|
end,
|
|
|
|
function(w)
|
|
evo.destroy(w)
|
|
end)
|