bitvec
Version 1.0.1.2 revision 1 uploaded by Bodigrim.
Package meta
- Synopsis
- Space-efficient bit vectors
- Description
A newtype over Bool with a better Vector instance: 8x less memory, up to 1000x faster.
The vector package represents unboxed arrays of Bool spending 1 byte (8 bits) per boolean. This library provides a newtype wrapper Bit and a custom instance of unboxed Vector, which packs bits densely, achieving 8x less memory footprint. The performance stays mostly the same; the most significant degradation happens for random writes (up to 10% slower). On the other hand, for certain bulk bit operations Vector Bit is up to 1000x faster than Vector Bool.
Thread safety
Data.Bit is faster, but writes and flips are thread-unsafe. This is because naive updates are not atomic: read the whole word from memory, then modify a bit, then write the whole word back.
Data.Bit.ThreadSafe is slower (up to 20%), but writes and flips are thread-safe.
Similar packages
- Author
- Andrew Lelechenko <andrew.lelechenko@gmail.com>, James Cook <mokus@deepbondi.net>
- Bug reports
- n/a
- Category
- Data, Bit Vectors
- Copyright
- 2019 Andrew Lelechenko, 2012-2016 James Cook
- Homepage
- https://github.com/Bodigrim/bitvec
- Maintainer
- Andrew Lelechenko <andrew.lelechenko@gmail.com>
- Package URL
- n/a
- Stability
- n/a