7 comments

[ 5.1 ms ] story [ 37.2 ms ] thread
I still have no idea what they mean by "bitmap". Obviously it is not the same thing as I think of.
Roaring bitmaps are very interesting implementation. It's a mix of using arrays or bitsets (equivalent would be [1]) depending upon which are more efficient. I've used them in the past, and these are very effective, both for storage and for unions and intersections.

[1]: https://en.cppreference.com/w/cpp/utility/bitset

They're used to make very compact sets when the number of possible items is relatively small.
The meaning of bitmap here is essentially "bit array". Roaring bitmaps does a bunch of tricks to e.g. compress long runs of identical bits, which also happens to make bitwise operations a lot faster.