mirror of
https://github.com/littensy/charm.git
synced 2026-10-21 19:54:09 +00:00
perf: optimize mapped, add benches
This commit is contained in:
parent
d56672384a
commit
ada1b80b87
12 changed files with 385 additions and 161 deletions
63
benchmarks/propagate.bench.luau
Normal file
63
benchmarks/propagate.bench.luau
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
local ReplicatedStorage = game:GetService("ReplicatedStorage")
|
||||
|
||||
local Charm = require(ReplicatedStorage.Packages.Charm)
|
||||
|
||||
local atom = Charm.atom
|
||||
local computed = Charm.computed
|
||||
local effect = Charm.effect
|
||||
local listen = Charm.listen
|
||||
|
||||
local function propagate(w: number, h: number)
|
||||
local src = atom(1)
|
||||
for _ = 1, w do
|
||||
local last = src
|
||||
for _ = 1, h do
|
||||
local prev = last
|
||||
last = computed(function()
|
||||
return prev() + 1
|
||||
end)
|
||||
end
|
||||
effect(function()
|
||||
last()
|
||||
end)
|
||||
end
|
||||
src(src() + 1)
|
||||
end
|
||||
|
||||
local function propagateListen(w: number, h: number)
|
||||
local src = atom(1)
|
||||
for _ = 1, w do
|
||||
local last = src
|
||||
for _ = 1, h do
|
||||
local prev = last
|
||||
last = computed(function()
|
||||
return prev() + 1
|
||||
end)
|
||||
end
|
||||
listen(last, function() end)
|
||||
end
|
||||
src(src() + 1)
|
||||
end
|
||||
|
||||
return {
|
||||
Functions = {
|
||||
["effect 1*100"] = function()
|
||||
propagate(1, 100)
|
||||
end,
|
||||
["effect 100*1"] = function()
|
||||
propagate(100, 1)
|
||||
end,
|
||||
["effect 10*10"] = function()
|
||||
propagate(10, 10)
|
||||
end,
|
||||
["listen 1*100"] = function()
|
||||
propagateListen(1, 100)
|
||||
end,
|
||||
["listen 100*1"] = function()
|
||||
propagateListen(100, 1)
|
||||
end,
|
||||
["listen 10*10"] = function()
|
||||
propagateListen(10, 10)
|
||||
end,
|
||||
},
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue