mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
[UIManager] Reverse order of _task_queue (#9706)
This commit is contained in:
77
spec/unit/taskqueue_bench.lua
Normal file
77
spec/unit/taskqueue_bench.lua
Normal file
@@ -0,0 +1,77 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user