- Fixed logical bug in deserialization
- Performance optimization count_and(), bvector destruction, etc
- Simplified template arguments for bvector<>
Release 3.6.4 significantly improves performance of deserialization.
Release 3.6.3 fixes critical bug for 64-bit mode and improves performance of bit-counting dependent operations.
New features: optimizations for 64-bit SSE 4.2, new algorithm for random subset generation, configuration for MacOS-X
BitMagic Library v.3.6.1 features optimized de-compression (Gamma Encoding). Added support for SSE 4.2 (Intel Nehalem).
BitMagic Library v.3.6.0 features improved bit-vector serialization
with bit-set compression. New serialization adds Gamma encoding
on top of D-Gap compression. New serialization should significantly
reduce IO for databases and search systems using serialized bit-vectors.
BitMagic Library version 3.5.4: this release features SSE2 and GCC compatibility. Now all SSE2 optimization options are available for Intel C++, GCC and MSVC.
BitMagic Library version 3.5.3:
- improved performance of AND logical operations and derived
DOT product algorithms (cound_and(), any_and())
- improved compression of serialized bvectors
(serialization format remains backward compatible)
- fixed compatibility issues with MSVC8 and Intel C++ 11 .1
(SSE2 optimization mode)
- improved automatic variables disambiguation using 'restrict'
Please see BitMagic Library BLOG at
http://bvector.blogspot.com/
BitMagic library v.3.5.2 improves size and performance of serialization. Short bit-vectors are taking less space.
New algorithm for bit iteration improves performance by 10-20% (enumerator). Few minor bug fixes.
This release fixes several coding bugs (some of them should be considered important). Code has been cleaned up in many places, eliminating some compilation warnings. Improved compatibility with WIN64 platform.
Bitset serialization improved to work faster and in many cases compress bitsets better.
BitMagic Librarry Release 3.3.0 fixes several compilation
incompatibilities. The major fix is GCC 3.4. Incorporated several improvements contributed by Apple Mac users.
API change: serialization functions are now
separated into an separate group of utilities (see bmserial.h)
BitMagic - compressed bitvectors library gets new features:
- New function bvector<>::set_range, performance optimized when you need to set or clear many bits in one call
- New set algorithms (bmalgo.h)
count_intervals - compute number of bit intervals (GAPs) in bitvector
combine_and, combine_or, combine_xor, combine_sub - performance optized recombination of bitvector and an arbitrary set sequence (iterator) (works well with STL containers and other iterable containers)
- Made bvector<> architecture more open.
Some internal access functions now are public.
It makes possible to create external functions and algorithms based on bvector, but not part of it. Over time bvector<> template became an example of a swiss-army knife class, slowing down compilation and hard to supportand and understand. This design change will make possible migration of some methods (like serialize/deserialize) into a separate place.... read more
More information on memory bandwidth issues and bitset distances (on example of Hamming distance).
http://bmagic.sourceforge.net/bmsse2opt.html
Distance optimization is work in progress for the next version of the BM library.
BitMagic library of compressed bitsets releases v. 3.1.4.
After a serious testing several critical bugs were found and fixed. It's strongly suggested to start using this new version.
Also we made one important change to the code structure. All platform dependent SSE2 code now migrated into an optional header. This change is supposed to facilitate creation of new modules for other SIMD architectures(3DNow!, Altivec, etc). Developers with experience in SIMD programming are very welcome to paticipate in this activity.
Changes in version 3.1.3
- Improved compatibility between bvector<> and STL algorithms and containers. enumerator can now be used as an argument of std::set_intersection, etc. Added inserter class to copy data from containers to bvector. See sample8.cpp for more details
- New function: bvector<>::count_range - counts number of 1 bits in a given range of bits.
- New function: bvector<>::set_gap_levels - to change possible GAP sizes after bvector construction... read more
BitMagic is a C++ library implementing dynamic bitvectors with several types of on-the-fly, adaptive compression. Designed for use in databases, search systems, scientific projects. Version 3.1.2 primarily focuses on memory consumption issues. Additional parameters added to save memory in situations when thousands of bitsets are used.
(see http://bmagic.sourceforge.net/memsave.html\); several build environment problems were fixed; added support file for AIX; improved performance of logical operations.
Compressed bitsets C++ template library v. 3.1.1 released. This version implements optimization for SSE2 arithmetic (Pentium 4). Optimization principles are described in accompanying article (http://bmagic.sourceforge.net/bmsse2opt.html).
- performance optimization of bvector<>::enumerator;
- lexicographical comparison of bitsets
reimplemented for better performance;
- additional optimization of bitcounting procedures to employ out-of-order execution on some processors;
- added several functions making bvector<> look more like standard std::bitset;
- fixed several minor bugs and problems