remove schemes temporary

This commit is contained in:
BlackMATov
2025-09-19 15:13:58 +07:00
parent b420085ed5
commit 1635dd66b1
5 changed files with 167 additions and 790 deletions

View File

@@ -3,12 +3,11 @@ require 'develop.samples.systems'
require 'develop.testing.multi_spawn_tests'
require 'develop.testing.name_tests'
require 'develop.testing.requires_fragment_tests'
require 'develop.testing.scheme_tests'
require 'develop.testing.system_as_query_tests'
require 'develop.benchmarks.multi_clone_bmarks'
require 'develop.benchmarks.multi_spawn_bmarks'
require 'develop.benchmarks.scheme_bmarks'
require 'develop.benchmarks.process_bmarks'
require 'develop.untests'

View File

@@ -0,0 +1,102 @@
local evo = require 'evolved'
local basics = require 'develop.basics'
evo.debug_mode(false)
local N = 10000
print '----------------------------------------'
basics.describe_bench(string.format('Scheme 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('Scheme 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)

View File

@@ -1,205 +0,0 @@
local evo = require 'evolved'
local basics = require 'develop.basics'
evo.debug_mode(false)
local N = 10000
print '----------------------------------------'
basics.describe_bench(string.format('Scheme 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('Scheme 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)
print '----------------------------------------'
basics.describe_bench(string.format('Scheme Benchmarks: Evolved-FFI 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 vector4 = evo.scheme_record {
x = evo.scheme_number(),
y = evo.scheme_number(),
z = evo.scheme_number(),
w = evo.scheme_number(),
}
local pf = evo.builder():set(wf):set(evo.SCHEME, vector4):spawn()
local vf = evo.builder():set(wf):set(evo.SCHEME, vector4):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('Scheme Benchmarks: Evolved-FFI 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):set(evo.SCHEME, evo.scheme_number()):spawn()
local pyf = evo.builder():set(wf):set(evo.SCHEME, evo.scheme_number()):spawn()
local pzf = evo.builder():set(wf):set(evo.SCHEME, evo.scheme_number()):spawn()
local pwf = evo.builder():set(wf):set(evo.SCHEME, evo.scheme_number()):spawn()
local vxf = evo.builder():set(wf):set(evo.SCHEME, evo.scheme_number()):spawn()
local vyf = evo.builder():set(wf):set(evo.SCHEME, evo.scheme_number()):spawn()
local vzf = evo.builder():set(wf):set(evo.SCHEME, evo.scheme_number()):spawn()
local vwf = evo.builder():set(wf):set(evo.SCHEME, evo.scheme_number()):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)

View File

@@ -1,173 +0,0 @@
local evo = require 'evolved'
do
local ns1 = evo.scheme_number()
local ns2 = evo.scheme_number()
local f1 = evo.builder():scheme(ns1):spawn()
local f2 = evo.builder():scheme(ns2):spawn()
local e1 = evo.builder():set(f1, 1):spawn()
local e2 = evo.builder():set(f1, 3):set(f2, 4):spawn()
do
assert(evo.get(e1, f1) == 1 and evo.get(e1, f2) == nil)
assert(evo.get(e2, f1) == 3 and evo.get(e2, f2) == 4)
end
evo.set(e1, f2, 2)
do
assert(evo.get(e1, f1) == 1 and evo.get(e1, f2) == 2)
assert(evo.get(e2, f1) == 3 and evo.get(e2, f2) == 4)
end
local es = evo.builder():set(f1, 5):set(f2, 6):multi_spawn(40)
for _, e in ipairs(es) do assert(evo.get(e, f1) == 5 and evo.get(e, f2) == 6) end
end
do
local rs1 = evo.scheme_record { v = evo.scheme_number() }
local rs2 = evo.scheme_record { v1 = evo.scheme_number(), v2 = evo.scheme_number() }
local rs3 = evo.scheme_record { n1 = rs2, n2 = rs1 }
local f1 = evo.builder():scheme(rs1):spawn()
local f2 = evo.builder():scheme(rs2):spawn()
local f3 = evo.builder():scheme(rs3):spawn()
local e1 = evo.builder():set(f1, { v = 42 }):spawn()
local e2 = evo.builder():set(f2, { v1 = 21, v2 = 84 }):spawn()
local e3 = evo.builder():set(f3, { n1 = { v1 = 1, v2 = 2 }, n2 = { v = 3 } }):spawn()
assert(evo.get(e1, f1).v == 42)
assert(evo.get(e2, f2).v1 == 21 and evo.get(e2, f2).v2 == 84)
assert(evo.get(e3, f3).n1.v1 == 1 and evo.get(e3, f3).n1.v2 == 2 and evo.get(e3, f3).n2.v == 3)
end
do
local s = evo.scheme_number()
local f1 = evo.builder():scheme(s):spawn()
local f2 = evo.builder():scheme(s):spawn()
local f3 = evo.builder():scheme(s):spawn()
local b = evo.builder():set(f1, 42)
local es = {}
for i = 1, 12 do es[i] = b:spawn() end
for _, e in ipairs(es) do assert(evo.get(e, f1) == 42) end
for _, e in ipairs(es) do evo.set(e, f2, 84) end
for _, e in ipairs(es) do assert(evo.get(e, f1) == 42 and evo.get(e, f2) == 84) end
for _, e in ipairs(es) do evo.remove(e, f1) end
for _, e in ipairs(es) do assert(evo.get(e, f1) == nil and evo.get(e, f2) == 84) end
local q_f2 = evo.builder():include(f2):spawn()
evo.batch_set(q_f2, f3, 21)
for _, e in ipairs(es) do assert(evo.get(e, f2) == 84 and evo.get(e, f3) == 21) end
evo.batch_remove(q_f2, f2)
for _, e in ipairs(es) do assert(evo.get(e, f2) == nil and evo.get(e, f3) == 21) end
end
do
local s = evo.scheme_number()
local f1 = evo.builder():scheme(s):spawn()
local f2 = evo.builder():scheme(s):spawn()
local f3 = evo.builder():scheme(s):spawn()
local b = evo.builder():set(f1, 42)
local es = {}
for i = 1, 12 do es[i] = b:spawn() end
for _, e in ipairs(es) do assert(evo.get(e, f1) == 42) end
for _, e in ipairs(es) do evo.set(e, f2, 84) end
for _, e in ipairs(es) do assert(evo.get(e, f1) == 42 and evo.get(e, f2) == 84) end
for _, e in ipairs(es) do evo.remove(e, f1) end
for _, e in ipairs(es) do assert(evo.get(e, f1) == nil and evo.get(e, f2) == 84) end
local q_f2 = evo.builder():include(f2):spawn()
do
b:remove(f1):set(f2, 84):set(f3, 21)
for _ = 1, 12 do es[#es + 1] = b:spawn() end
end
evo.batch_set(q_f2, f3, 21)
for _, e in ipairs(es) do assert(evo.get(e, f2) == 84 and evo.get(e, f3) == 21) end
evo.batch_remove(q_f2, f2)
for _, e in ipairs(es) do assert(evo.get(e, f2) == nil and evo.get(e, f3) == 21) end
end
do
local s = evo.scheme_number()
local f1 = evo.builder():scheme(s):spawn()
local f2 = evo.builder():scheme(s):spawn()
local f3 = evo.builder():scheme(s):spawn()
local b = evo.builder():set(f1, 42)
local es = {}
for i = 1, 12 do es[i] = b:spawn() end
for _, e in ipairs(es) do assert(evo.get(e, f1) == 42) end
for _, e in ipairs(es) do evo.set(e, f2, 84) end
for _, e in ipairs(es) do assert(evo.get(e, f1) == 42 and evo.get(e, f2) == 84) end
for _, e in ipairs(es) do evo.remove(e, f1) end
for _, e in ipairs(es) do assert(evo.get(e, f1) == nil and evo.get(e, f2) == 84) end
local q_f2 = evo.builder():include(f2):spawn()
local q_f3 = evo.builder():include(f3):spawn()
do
b:remove(f1):set(f2, 84):set(f3, 21)
b:multi_spawn(24)
evo.batch_destroy(q_f3)
end
evo.batch_set(q_f2, f3, 21)
for _, e in ipairs(es) do assert(evo.get(e, f2) == 84 and evo.get(e, f3) == 21) end
evo.batch_remove(q_f2, f2)
for _, e in ipairs(es) do assert(evo.get(e, f2) == nil and evo.get(e, f3) == 21) end
end
do
local s = evo.scheme_number()
local f1 = evo.builder():scheme(s):spawn()
local f2 = evo.builder():scheme(s):spawn()
local ec = evo.builder():set(f1, 21):set(f2, 42):multi_spawn(11)
for _, e in ipairs(ec) do assert(evo.get(e, f1) == 21 and evo.get(e, f2) == 42) end
local q_f1 = evo.builder():include(f1):spawn()
evo.batch_remove(q_f1, f1)
for _, e in ipairs(ec) do assert(evo.get(e, f1) == nil and evo.get(e, f2) == 42) end
end
do
local ns1 = evo.scheme_number()
local f = evo.builder():scheme(ns1):spawn()
local e = evo.builder():set(f, 42):spawn()
assert(evo.get(e, f) == 42)
local ns2 = evo.scheme_number()
evo.set(f, evo.SCHEME, ns2)
assert(evo.get(e, f) == 42)
local ns3 = evo.scheme_boolean()
evo.set(f, evo.SCHEME, ns3)
assert(evo.get(e, f) == true)
end