jecs/benches/general.luau
2024-07-15 23:41:31 +02:00

97 lines
No EOL
1.5 KiB
Text

local jecs = require("../src/init")
local testkit = require("../testkit")
local BENCH, START = testkit.benchmark()
local function TITLE(s: string)
print()
print(testkit.color.white(s))
end
local N = 2^18
local pair = jecs.pair
do TITLE "create"
local world = jecs.World.new()
BENCH("entity", function()
for i = 1, START(N) do
world:entity()
end
end)
local A, B = world:entity(), world:entity()
BENCH("pair", function()
for i = 1, START(N) do
jecs.pair(A, B)
end
end)
end
do TITLE "set"
local world = jecs.World.new()
local A = world:entity()
local entities = table.create(N)
for i = 1, N do
entities[i] = world:entity()
end
BENCH("add", function()
for i = 1, START(N) do
world:set(entities[i], A, 1)
end
end)
BENCH("set", function()
for i = 1, START(N) do
world:set(entities[i], A, 2)
end
end)
end
do TITLE "get"
local world = jecs.World.new()
local A, B, C, D = world:entity(), world:entity(), world:entity(), world:entity()
local entities = table.create(N)
for i = 1, N do
entities[i] = world:entity()
world:set(entities[i], A, 1)
world:set(entities[i], B, 1)
world:set(entities[i], C, 1)
world:set(entities[i], D, 1)
end
BENCH("1", function()
for i = 1, START(N) do
world:get(entities[i], A)
end
end)
BENCH("2", function()
for i = 1, START(N) do
world:get(entities[i], A, B)
end
end)
BENCH("3", function()
for i = 1, START(N) do
world:get(entities[i], A, B, C)
end
end)
BENCH("4", function()
for i = 1, START(N) do
world:get(entities[i], A, B, C, D)
end
end)
end