2
0
mirror of https://github.com/koreader/koreader synced 2024-11-18 03:25:46 +00:00
koreader/spec/unit/taskqueue_bench.lua

78 lines
2.5 KiB
Lua

require("commonrequire")
local UIManager = require("ui/uimanager")
local time = require("ui/time")
local NB_TESTS = 40000
local noop = function() end
describe("UIManager simple checkTasks and scheduling benchmark", function()
local now = time.now()
local wait_until -- luacheck: no unused
UIManager:quit()
UIManager._task_queue = {}
-- use schedule here, to be agnostic of the _task_queue order (ascending, descending).
for i=1, NB_TESTS/2 do
UIManager:schedule(now + i, noop)
UIManager:schedule(now + NB_TESTS - i, noop)
end
for i=1, NB_TESTS do
wait_until, now = UIManager:_checkTasks() -- luacheck: no unused
end
end)
describe("UIManager more advanced checkTasks and scheduling benchmark", function()
-- This BM is doing schedulings like the are done in real usage
-- with autosuspend, autodim, autowarmth and friends.
-- Additional _checkTask is called to better simulate bench this too.
local wait_until -- luacheck: no unused
local now = time.now()
UIManager:quit()
local function standby_dummy() end
local function autowarmth_dummy() end
local function dimmer_dummy() end
local function someTaps()
for j = 1,10 do
-- insert some random times for entering standby
UIManager:schedule(now + time.s(j), standby_dummy) -- standby
UIManager:unschedule(standby_dummy)
end
end
for i=1, NB_TESTS do
UIManager._task_queue = {}
UIManager:schedule(now + time.s(24*60*60), noop) -- shutdown
UIManager:schedule(now + time.s(15*60*60), noop) -- sleep
UIManager:schedule(now + time.s(55), noop) -- footer refresh
UIManager:schedule(now + time.s(130), noop) -- something
UIManager:schedule(now + time.s(10), noop) -- something else
for j = 1,5 do
someTaps()
for k = 1, 10 do
UIManager:schedule(now + time.s(k), standby_dummy) -- standby
end
now = now + 10
-- consume the last 10 standby_dummy, plus 10 checks.
for k = 1, 20 do
wait_until, now = UIManager:_checkTasks() -- luacheck: no unused
end
UIManager:schedule(now + time.s(15*60), autowarmth_dummy) -- autowarmth
UIManager:schedule(now + time.s(180), dimmer_dummy) -- dimmer
now = now + 30
UIManager:unschedule(dimmer_dummy)
UIManager:unschedule(autowarmth_dummy) -- remove autowarmth
end
end
end)