Skip to content

x6eull/ibbv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

106 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ibbv

ibbv (Indexed Block Bit Vector) utilize SIMD technology to accelerate common set operations.

Requires C++17 and AVX-512.

How to use

  1. Add following lines to CMakeLists.txt:
find_package(ibbv REQUIRED CONFIG)
link_libraries(ibbv) # or target_link_libraries
  1. Set enviornment variable ibbv_DIR to the path to this repo.
  2. Use AdapativeBitVector:
#include <AdaptiveBitVector.hpp>
template <unsigned _unused = 128>
using SparseBitVector = ibbv::AdaptiveBitVector<>;

The implementation can be changed by passing -DIBBV_IMPL=<impl_to_use> when configuring project. ibbv::AdaptiveBitVector<> will be routed to different implementations.

Some implementations doesn't support find_first and/or find_last.

Available implementations: "ibbv" "abv" "roaring" "wah" "concise" "ewah"

  • ibbv: Indexed Block Bit Vector.
  • abv: Adaptive Bit Vector. Use array to store few elements and ibbv otherwise.
  • roaring: CRoaring implementation (on 2025-09-08T13:52:04Z).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors