Software /
code /
prosody
File
util/bit53.lua @ 13136:396db0e7084f
mod_storage_internal: Use a binary search for time based ranges
Iterating over an entire archive to find a few items in the far end from
where iteration started is expensive, and probably more expensive with
the lazy-loading of items added in the previous commit.
Since we can now efficiently read items in random order, we can now use
a binary search to find a better starting point for iteration.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 12 May 2021 01:32:03 +0200 |
parent | 12365:af02b033bd7f |
child | 13449:9912baa541c0 |
line wrap: on
line source
-- Only the operators needed by net.websocket.frames are provided at this point return { band = function (a, b, ...) local ret = a & b; if ... then for i = 1, select("#", ...) do ret = ret & (select(i, ...)); end end return ret; end; bor = function (a, b, ...) local ret = a | b; if ... then for i = 1, select("#", ...) do ret = ret | (select(i, ...)); end end return ret; end; bxor = function (a, b, ...) local ret = a ~ b; if ... then for i = 1, select("#", ...) do ret = ret ~ (select(i, ...)); end end return ret; end; rshift = function (a, n) return a >> n end; lshift = function (a, n) return a << n end; };