charm/benches/propagate.luau
2025-05-21 12:16:29 -07:00

42 lines
828 B
Text

local Charm = require("@packages/charm/src")
local bench = require("./bench")
local signals = Charm.signals
for _, w in { 10, 100 } do
for _, h in { 10, 100 } do
bench.run(`charm {w}*{h}`, function()
local src = Charm.atom(1)
for _ = 1, w do
local last = src
for _ = 1, h do
local prev = last
last = Charm.computed(function()
return prev() + 1
end)
end
Charm.effect(function()
last()
end)
end
src(src() + 1)
end)
bench.run(`alien-signals {w}*{h}`, function()
local src, setSrc = signals.signal(1)
for _ = 1, w do
local last = src
for _ = 1, h do
local prev = last
last = signals.computed(function()
return prev() + 1
end)
end
signals.effect(function()
last()
end)
end
setSrc(src() + 1)
end)
end
end