PyRoaringBitMap icon indicating copy to clipboard operation
PyRoaringBitMap copied to clipboard

No way to do zerocopy deserialize

Open giannitedesco opened this issue 4 years ago • 2 comments

I'd like to Bitmap.deserialize from a read-only mmap file which contains a large roaring bitmap. To do that I have to copy the bitmap in to a bytes by slicing it, because if I use a memoryview instead, I get the error

  File "pyroaring/abstract_bitmap.pxi", line 726, in pyroaring.AbstractBitMap.deserialize
TypeError: expected bytes, memoryview found

It should be possible to use the buffer protocol in conjunction with roaring_bitmap_portable_deserialize_safe

giannitedesco avatar Apr 05 '20 22:04 giannitedesco

This problem is exacerbated if the bitmap is stored inside a much larger file without a size field which might allow slicing out only the bitmap bytes.

It might be nice, by the way, to support the frozen format for these sorts of purposes to avoid doing a lot of allocations when bitmaps are in read-only mmaps.

giannitedesco avatar Apr 05 '20 22:04 giannitedesco

Hello and sorry for the delay. I do not have much time presently, so I cannot implement this feature myself, but I would be glad to review any pull request.

Ezibenroc avatar Sep 16 '20 16:09 Ezibenroc