Name : ghc-bitvec
| |
Version : 1.1.5.0
| Vendor : openSUSE
|
Release : 2.2
| Date : 2024-03-08 22:08:37
|
Group : Unspecified
| Source RPM : ghc-bitvec-1.1.5.0-2.2.src.rpm
|
Size : 1.51 MB
| |
Packager : https://bugs_opensuse_org
| |
Summary : Space-efficient bit vectors
|
Description :
A newtype over \'Bool\' with a better \'Vector\' instance: 8x less memory, up to 3500x faster.
The < https://hackage.haskell.org/package/vector vector> package represents unboxed arrays of \'Bool\'s spending 1 byte (8 bits) per boolean. This library provides a newtype wrapper \'Bit\' and a custom instance of an unboxed \'Vector\', which packs bits densely, achieving an __8x smaller 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 3500x faster than \'Vector\' \'Bool\'.
=== Thread safety
* \"Data.Bit\" is faster, but writes and flips are not thread-safe. This is because naive updates are not atomic: they read the whole word from memory, then modify a bit, then write the whole word back. Concurrently modifying non-intersecting slices of the same underlying array may also lead to unexpected results, since they can share a word in memory. * \"Data.Bit.ThreadSafe\" is slower (usually 10-20%), but writes and flips are thread-safe. Additionally, concurrently modifying non-intersecting slices of the same underlying array works as expected. However, operations that affect multiple elements are not guaranteed to be atomic.
=== Similar packages
* < https://hackage.haskell.org/package/bv bv> and < https://hackage.haskell.org/package/bv-little bv-little> do not offer mutable vectors.
* < https://hackage.haskell.org/package/array array> is memory-efficient for \'Bool\', but lacks a handy \'Vector\' interface and is not thread-safe.
|
RPM found in directory: /packages/linux-pbone/ftp5.gwdg.de/pub/opensuse/repositories/openSUSE:/ALP:/Experimental:/Slowroll/base.20240429/repo/oss/x86_64 |