DeepAI AI Chat
Log In Sign Up

Roaring Bitmaps: Implementation of an Optimized Software Library

09/22/2017
by   Daniel Lemire, et al.
0

Compressed bitmap indexes are used in systems such as Git or Oracle to accelerate queries. They represent sets and often support operations such as unions, intersections, differences, and symmetric differences. Several important systems such as Elasticsearch, Apache Spark, Netflix's Atlas, LinkedIn's Pivot, Metamarkets' Druid, Pilosa, Apache Hive, Apache Tez, Microsoft Visual Studio Team Services and Apache Kylin rely on a specific type of compressed bitmap index called Roaring. We present an optimized software library written in C implementing Roaring bitmaps: CRoaring. It benefits from several algorithms designed for the single-instruction-multiple-data (SIMD) instructions available on commodity processors. In particular, we present vectorized algorithms to compute the intersection, union, difference and symmetric difference between arrays. We benchmark the library against a wide range of competitive alternatives, identifying weaknesses and strengths in our software. Our work is available under a liberal open-source license.

READ FULL TEXT

page 1

page 2

page 3

page 4

09/21/2021

Transcoding Billions of Unicode Characters per Second with SIMD Instructions

In software, text is often represented using Unicode formats (UTF-8 and ...
10/06/2020

Validating UTF-8 In Less Than One Instruction Per Byte

The majority of text is stored in UTF-8, which must be validated on inge...
08/11/2020

The Umbrella software suite for automated asteroid detection

We present the Umbrella software suite for asteroid detection, validatio...
04/08/2021

msolve: A Library for Solving Polynomial Systems

We present a new open source C library dedicated to solving multivariat...
02/22/2019

Parsing Gigabytes of JSON per Second

JavaScript Object Notation or JSON is a ubiquitous data exchange format ...
10/18/2021

SmartGridToolbox: A Library for Simulating Modern and Future Electricity Networks

We present SmartGridToolbox: a C++ library for simulating modern and fut...
07/05/2021

E-SC4R: Explaining Software Clustering for Remodularisation

Maintenance of existing software requires a large amount of time for com...

Code Repositories

RoaringBitmap

A better compressed bitset in Java


view repo

roaring

Roaring bitmaps in Go (golang)


view repo

EWAHBoolArray

A compressed bitmap class in C++.


view repo

CRoaring

Roaring bitmaps in C (and C++)


view repo

gocroaring

Go wrapper for CRoaring


view repo