BitMagic release v7.12.3
Release Notes: BitMagic 7.12.3
Bug fixes:
- Fixed bugs related to handling of immutable bit-vectors
- Fixed bug in Rank-Select index assisted
bvector<>::count_to()
New features, optinmizations, improvements:
-
Implemented sparse vector read-only deserialization.
bm::sparse_vector_deserializer<>::set_finalization(bm::finalization::READONLY);
https://github.com/tlk00/BitMagic/tree/master/samples/svsample02
-
Optimizations: for bvector<>::test( ) membership testing (and changing)
for GAP compressed blocks. BM implementation uses binary search (ONlogN) for this operation
with SIMD optimizations (hybrid binary search). The algorithms around this problem were
reviewed to minimize number of comparisons, better use L1 cache and improve speed.
Performance gain of 10-20% measured on synthetic tests.
3.Optimizations: bm::aggregator<> SIMD and general purpose optimizations
of aggregate AND-SUB operations. Group AND-SUB operation is at the core of succinct vector
searches, inspired by Bloom filters but uses "data as an index approach"
(works well for bit-sliced succinct vectors).
Latest version adds various optimizations related to SIMD, parallel memory reads,
algorithmically better detection of search reductions.
- Optimizations: bm::sparse_vector_scanner<>::bfind_eq_str() -
binary search in compressive memory vectors of strings.
Implemented a new index for approximating the search using binary index.
BM allows to setup a binding between bm::sparse_vector_scanner and a sperse
vector itself, defining the fraction of elements to keep decompressed for the fast approximated
search. Maintenance of a index fractionally reduces a memory efficiency, but significantly
improves the search speed.
New example was added to the code repo to illustrate the new API.
https://github.com/tlk00/BitMagic/tree/master/samples/strsvsample08.
Release notes:
http://bitmagic.io/bm-7.12.3.html