|
|
November 22, 2009. BM library version 3.6.1 released
improved performance of Elias Gamma decoding. Deserialization of compressed bit-vectors
is seriously faster
introduced hardware specific optimizations for Intel Nehalem SSE 4.2
fixed stack overrun bug
October 19, 2009.
Elias Gamma encoding of bit-vector Delta Gaps
October 17, 2009. BM library version 3.6.0 released
improved bit-vector serialization with bitset compression.
New serialization adds Gamma encoding on top of D-Gap compression. This should
reduce IO for databases and search systems using serialized bit-vectors.
fixed functionality bug in deserialization with logical AND
new serialization API (old API kept for backward compatibility)
August 19, 2009.
SSE2 vs CUDA.
CUDA vs SSE2 in parallel bit stream transposition / similarity.
Aug 08, 2009. BM library version 3.5.3 released
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'
Aug 05, 2009. BitMagic Library BLOG at:
http://bvector.blogspot.com
July 24, 2009. BM library version 3.5.2 released
Serialization improvements: faster speed on x86 platforms, compact storage for short vectors
Improved performance of bit traversal (enumerator)
Aug 5, 2007. BM library version 3.5.0 released
Serialization improvements: new functions to deserialize bit-vector
applying set operation (AND, OR, XOR, etc) or compute bit count.
Works faster than deserialization with subsequent logical operation.
Applications do not need to create temporary vectors.
Fixed several bugs
Apr 20, 2006. BM library version 3.4.0 released
Serialization improvements: faster code, better compression
Fixed several bugs and incompatibilities
Feb 22, 2005. BM library version 3.3.0 released
Serialization methods has been derived into a separate group of functions.
March 25, 2004. BM library version 3.2.1 released
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 structures)
October 5, 2003. BM library version 3.2.0 released
bvector<> architecture made 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.
Added bmalgo.h - new header with bvector based optimized
algorithms. Now it includes distance metrics (Hamming, etc).
This algorithms work 3-5 times faster than straighforward approach.
See also Efficient distance metrics
Fixed a serious bug which could result in incorrect functionality
and even crash in multi-threaded applications.
more SSE2 optimizations (no dramatic improvement, but still better
performance on some operations)
Added support for "restrict" keyword. It's turned on by
BM_HASRESTRICT define. Some compilers (Intel C++) benefit from that by
generating better code with out of order stores.
September 25, 2003.
SSE2 optimization article updated.
More information on memory bandwidth issues and bitset distances
(on example of Hamming distance).
August 16, 2003. BM library version 3.1.4 released
This release fixes several critical incorrect functionality bugs and one
incorrect memory read bug. It's strongly suggested to download and use the new
release.
BM was reviewed by Pavel Vozenilek. As a result of this review several changes
were made:
Platform dependent SSE2 code now migrated into a separate header.
The change is supposed to facilitate implementation of new platform dependent
plugins for other SIMD architectures like 3DNow!, Altivec, etc.
Use of defines and constants made more regular.
All BM defines are now made local, reduced risk of conflicts with other sources.
Created forward declaration header bmfwd.h to spped up compilation of
translation units only using pointers or references on bvector.
June 8, 2003. BM library version 3.1.3 released
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
New function: bvector<>::optimize_gap_size - computes optimal GAP sizes
for bvector
bvector<> statistics calculation improved, now statistics includes information about
gap blocks bvector<>::calc_stat - function prototype changed
bvector<> serialization format changed (incompatible with prev. versions)
Added "const" version of serialize function
bvector<>::strategy enum has been taken out of bvector<>
Implemented new method of keeping GAP flags inside bvector<>. Previous
version used mini bitset (template argument 2(MS)) to keep this flag.
Current version by default does not use min bitset but keeps this flag
in the block pointer. This trick is based on the fact that most allocators
give us aligned block of memory and bit 0 in the pointer is always 0 and can
be used to keep information. This hack works better than a dedicated bitset
of both in terms of memory and performance.
BM library fully supports the old implementation.
All you need is to define BM_DISBALE_BIT_IN_PTR
bvector<>::clear() - received an optional argument free_mem - indicates
if we want to free the unused memory
fixed several problems in the build environment
March 28, 2003. BM library version 3.1.2 released
BM library tuned for minimal memory consumtion
fixed several problems in the build environment
improved performance of logical operations (OR, AND, etc.)
March 6, 2003. BM library version 3.1.1 released
This version is about 128-bit SSE2 optimization.
Feb 19, 2003. BM library version 3.1.0 released
performance optimization of bvector<>::enumerator. Bitvector as a container. Bitset traversal.
lexicographical comparison of bitsets re-implemented 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
Jan 4, 2003. BM library version 3.0.0 released
Major redesign has been made. BM is not a library anymore. It is library of templates! In its design BM tries to resemble STL, but it still remains independent from STL and does not require any part of STL to be fully functional.
STL style allocators are supported now. Optimization of memory allocations.
implemented lexicorgahical comparison of bitsets as bit-strings
Number of improvements in syntax, added operators support for bit operations (AND, OR, etc) and comparisons
performance optimization
fixed several bugs
Sept 28, 2002. BM library version 2.2.0 released
variable length GAP blocks, saves some memory
number of functions were templetised, improved code reuse (good bye fast compilation)
get_count() function renamed to count(). Bit count optimization turned off by default.
(define BMCOUNTOPT and recompile code if want it ON)
Beware: count optimization makes BM thread unsafe in rear cases because of the mutable variables that can be modified in const count() function.
July 19, 2002. BM library version 2.1.0 released
This version is devoted to 64-bit Optimization.
July 10, 2002. Next version development started
Target is 64-bit optimization.
July 8, 2002. This site launched
|
|