Java中更好的bitmaps压缩类库:RoaringBitmap

jopen 10年前

Bitsets也叫作bitmaps,通常被用作快速的数据结构。 不幸的是,它们会使用太多内存。为了弥补,我们经常使用压缩的位图(bitmaps)。

Roaring bitmaps压缩的位图往往超越常规的压缩位图,比如:WAH, EWAH 或 Concise。在一些情况下,Roaring bitmaps可以是几百倍更快的速度,它们通常提供显著更好的压缩。这个类库已经在 Apache Spark (https://spark.apache.org/) 和 Druid.io (http://druid.io/)中使用。Apache Lucene (http://lucene.apache.org/) 也使用了 Roaring bitmaps,尽管他们有自己的独立实现:https://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/util/RoaringDocIdSet.java?view=markup&pathrev=1629606

    import org.roaringbitmap.*;        //...        RoaringBitmap rr = RoaringBitmap.bitmapOf(1,2,3,1000);      RoaringBitmap rr2 = new RoaringBitmap();      for(int k = 4000; k<4255;++k) rr2.add(k);        RoaringBitmap rror = RoaringBitmap.or(rr, rr2);

项目主页:http://www.open-open.com/lib/view/home/1419558335250