Package Exports
- fast-fifo
- fast-fifo/fixed-size
- fast-fifo/fixed-size.js
- fast-fifo/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (fast-fifo) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
fast-fifo
A fast fifo implementation similar to the one powering nextTick in Node.js core
npm install fast-fifoUses a linked list of growing fixed sized arrays to implement the FIFO to avoid allocating a wrapper object for each item.
Usage
const FIFO = require('fast-fifo')
const q = new FIFO()
q.push('hello')
q.push('world')
q.shift() // returns hello
q.shift() // returns worldAPI
q = new FIFO()
Create a new FIFO.
q.push(value)
Push a value to the FIFO. value can be anything other than undefined.
value = q.shift()
Return the oldest value from the FIFO.
q.clear()
Remove all values from the FIFO.
bool = q.isEmpty()
Returns true if the FIFO is empty and false otherwise.
value = q.peek()
Return the oldest value from the FIFO without shifting it out.
len = q.length
Get the number of entries remaining in the FIFO.
Benchmarks
Included in bench.js is a simple benchmark that benchmarks this against a simple linked list based FIFO.
On my machine the benchmark looks like this:
fifo bulk push and shift: 2881.508ms
fifo individual push and shift: 3248.437ms
fast-fifo bulk push and shift: 1606.972ms
fast-fifo individual push and shift: 1328.064ms
fifo bulk push and shift: 3266.902ms
fifo individual push and shift: 3320.944ms
fast-fifo bulk push and shift: 1858.307ms
fast-fifo individual push and shift: 1516.983msYMMV
License
MIT