Skip to content

BitMagic v.9.2.1

Latest

Choose a tag to compare

@KuznetA KuznetA released this 31 Jul 20:17

Changes:

Improvements to the speed of the sparse_vector_scanner searches, particularly the searches involving sparse_vector_floats due to adding new internal methods.
Reasons for improvements:

  • Removed the creation of a new internal unsigned int scanner with every single search, and now the internal scanner is only created once
  • Added an internal mask so that when a float search based on a previous search occurs, it does not search the entire sparse vector
  • Reduced the amount of times decompression of an internal bvector occurs

Comparing Time to run 1000 find_range_float searches from 9.1.0 and 9.2.1:

  • std:vector linearly goes over every element in the vector
Implementation Linear Data 9.1.0 Random Data 9.1.0 Linear Data 9.2.1 Random Data 9.2.1
std::vector 52 83.34 52 83.34
sparse_vector_scanner 0.8433 12.88 0.64 14.66
std::vector (35% NaN) 58.46 69.18 58.46 69.18
RSC sparse_vector_scanner (35% Null) 89.5 479.28 41.59 150

New Methods:

Created a new method in the sparse_vector_scanner class, find_range_float_unbounded which finds every value in an open interval, unlike the existing find_range_float method

New Sample:

Created a new xsample, xsample11 which demonstrates uses for sparse_vector_float objects with financial data

Bug fixes:

Fixed a major bug in bvector<>::bit_or_and() where the target block was not preserved when AND produces empty block