-
Notifications
You must be signed in to change notification settings - Fork 232
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Investigate "sroar": Dgraph's Serialized Roaring Bitmaps #298
Comments
This has been an update with competitive benchmark results: |
Here are the specific claims:
|
I found this library https://github.com/kelindar/bitmap it is 32-bit only. It is backed by a similar in-memory storage concept. |
@evanoberholster It is likely similar to https://github.com/bits-and-blooms/bitset in that it implements an uncompressed bitset. The use cases are different. |
FYI Dgraph recently posted an article explaining some details of their implementation https://dgraph.io/blog/post/serialized-roaring-bitmaps-golang/ |
Just to provide some random insight, I benchmarked migrating my teams custom storage system from this library to sroar and saw the following:
For those reasons we decided to stick with this library :) That’s just 1 datapoint though! In general I do think that sroars strategy of using a small number of bytes slices to represent the bitmaps and “dirty casting” them as needed is a winning one that this library could benefit from just in terms of generally reducing allocations/pointers which reduces pressure in the GC and allocator. |
Dgraph and I face the same situation: In-memory index with high memory usage and high gc pressure. |
Dgraph has made public their "Serialized Roaring Bitmaps" implementation at
https://github.com/dgraph-io/sroar
I would encourage the Roaring community to go have a look.
The text was updated successfully, but these errors were encountered: