@yantra-core/yantra
Version:
Yantra.gg Serverless Physics SDK for Real-time Multiplayer Game Development
79 lines (48 loc) • 1.46 kB
Markdown
A fast fifo implementation similar to the one powering nextTick in Node.js core
```
npm install fast-fifo
```
Uses a linked list of growing fixed sized arrays to implement the FIFO to avoid
allocating a wrapper object for each item.
``` js
const FIFO = require('fast-fifo')
const q = new FIFO()
q.push('hello')
q.push('world')
q.shift() // returns hello
q.shift() // returns world
```
Create a new FIFO.
Push a value to the FIFO. `value` can be anything other than undefined.
Return the oldest value from the FIFO.
Remove all values from the FIFO.
Returns `true` if the FIFO is empty and false otherwise.
Return the oldest value from the FIFO without shifting it out.
Get the number of entries remaining in the FIFO.
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.983ms
```
YMMV
MIT