Comparison

util/queue.lua @ 11103:73b8aaf55775 0.11

util.dbuffer: dynamic string buffer Similar to util.ringbuffer (and shares almost identical API). Differences: - size limit is optional and dynamic - does not allocate a fixed buffer of max_size bytes - focus on simply storing references to existing string objects where possible, avoiding unnecessary allocations - references are still stored in a ring buffer to enable use as a fast FIFO Optional second parameter to new() provides the number of ring buffer segments. On Lua 5.2 on my laptop, a segment is ~19 bytes. If the ring buffer fills up, the next write will compact all strings into a single item.
author Matthew Wild <mwild1@gmail.com>
date Fri, 26 Jun 2020 16:41:31 +0100
parent 6912:cb5b14c95b7b
child 11114:6a608ecb3471
comparison
equal deleted inserted replaced
11073:5691b9773c5b 11103:73b8aaf55775
49 if items == 0 then 49 if items == 0 then
50 return nil; 50 return nil;
51 end 51 end
52 return t[tail]; 52 return t[tail];
53 end; 53 end;
54 replace = function (self, data)
55 if items == 0 then
56 return self:push(data);
57 end
58 t[tail] = data;
59 return true;
60 end;
54 items = function (self) 61 items = function (self)
55 --luacheck: ignore 431/t 62 --luacheck: ignore 431/t
56 return function (t, pos) 63 return function (t, pos)
57 if pos >= t:count() then 64 if pos >= t:count() then
58 return nil; 65 return nil;