fast-bitfield

Variable sized bitfield that allows you to quickly iterate over bits

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
fast-bitfield
1.2.24 years ago4 years agoMinified + gzip package size for fast-bitfield in KB

Readme

fast-bitfield
A variable sized bitfield (based on indexed-bitfield) that allows you to quickly iterate over the bits.
npm install sparse-indexed-bitfield

Allocates a series of ~4kb bitfields (when needed) to store the underlying data efficiently.

Usage

const bitfield = require('fast-bitfield')

const bits = bitfield()

bits.set(1000, true)
bits.set(1000000000, true)

const ite = bits.iterator()

console.log(ite.next(true)) // 1000
console.log(ite.next(true)) // 1000000000
console.log(ite.next(true)) // -1

API

bits = bitfield()

Make a new fast bitfield

updated = bits.set(index, bool)

Set a bit.
Runs in O(log32(maxBitIndex)) worst case but often O(1)

bool = bits.get(index)

Get a bit.
Runs in O(log32(maxBitIndex))

bits.fill(val, [start], [end])

Set a range of bits efficiently.

iterator = bits.iterator()

Make a new bit iterator.

iterator.seek(index)

Move the iterator to start at index.
Runs in O(log32(maxBitIndex))

index = iterator.next(bit)

Returns the index of the next bit and -1 if none can be found.
Runs in O(log32(distanceToNextBit))

License

MIT