mirror of
https://github.com/centau/vide.git
synced 2026-08-20 23:01:37 +00:00
96 lines
2 KiB
Lua
96 lines
2 KiB
Lua
------------------------------------------------------------------------------------------
|
|
-- benchmark.lua
|
|
------------------------------------------------------------------------------------------
|
|
|
|
local BENCH, START = require("test/testkit").benchmark()
|
|
|
|
local vide = require "src/init"
|
|
|
|
local N = 1e6
|
|
|
|
BENCH("Create state", function()
|
|
local cache = table.create(N)
|
|
local source = vide.source
|
|
|
|
for i = 1, START(N) do
|
|
cache[i] = source(1)
|
|
end
|
|
end)
|
|
|
|
BENCH("Get state value", function()
|
|
local state = vide.source(1)
|
|
|
|
for i = 1, START(N) do
|
|
state()
|
|
end
|
|
end)
|
|
|
|
BENCH("Set state value", function()
|
|
local state = vide.source(1)
|
|
|
|
for i = 1, START(N) do
|
|
state(i)
|
|
end
|
|
end)
|
|
|
|
BENCH("Derive 1 state", function()
|
|
local cache = table.create(N)
|
|
local state = vide.source(1)
|
|
local derive = vide.derive
|
|
|
|
for i = 1, START(N) do
|
|
cache[i] = derive(function()
|
|
return state()
|
|
end)
|
|
end
|
|
end)
|
|
|
|
BENCH("Derive 2 states", function()
|
|
local cache = table.create(N)
|
|
local state = vide.source(1)
|
|
local state2 = vide.source(2)
|
|
local derive = vide.derive
|
|
|
|
for i = 1, START(N) do
|
|
cache[i] = derive(function()
|
|
return state() + state2()
|
|
end)
|
|
end
|
|
end)
|
|
|
|
BENCH("Set state value derived", function()
|
|
local state = vide.source(1)
|
|
local _derived = vide.derive(state)
|
|
|
|
for i = 1, START(N) do
|
|
state(i)
|
|
end
|
|
end)
|
|
|
|
BENCH("Apply 4 properties", function()
|
|
local apply = require "src/apply"
|
|
local instance = vide.create("Frame") {}
|
|
|
|
for i = 1, START(N) do
|
|
apply(instance, {
|
|
Name = i,
|
|
Name2 = i,
|
|
Name3 = i,
|
|
Name4 = i
|
|
})
|
|
end
|
|
end)
|
|
|
|
BENCH("Bind state", function()
|
|
local apply = require "src/apply"
|
|
local instance = vide.create("Frame") {}
|
|
local state = vide.source(1)
|
|
|
|
for i = 1, START(N) do
|
|
apply(instance, {
|
|
Name = state
|
|
})
|
|
end
|
|
end)
|
|
|
|
return nil
|