Name : ghc-bitvec
| |
Version : 1.1.5.0
| Vendor : SUSE LLC < https://www_suse_com/>
|
Release : 150500.11.3.2
| Date : 2024-01-29 16:18:14
|
Group : Unspecified
| Source RPM : ghc-bitvec-1.1.5.0-150500.11.3.2.src.rpm
|
Size : 1.27 MB
| |
Packager : https://www_suse_com/
| |
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: /vol/rzm3/linux-opensuse/distribution/leap/15.6/repo/oss/x86_64 |