{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/roaring-bitmaps-implementation-of-an","title":"Roaring Bitmaps: Implementation of an Optimized Software Library","arxiv_id":"1709.07821","date":"2017-09-22","proceeding":null,"authors":["Daniel Lemire","Owen Kaser","Nathan Kurz","Luca Deri","Chris O'Hara","François Saint-Jacques","Gregory Ssi-Yan-Kai"],"abstract":"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 Pinot, 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.","url_abs":"https://arxiv.org/abs/1709.07821v6","url_pdf":"https://arxiv.org/pdf/1709.07821v6.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"links_only","authors_date_abstract":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license), from the Kaggle arXiv metadata snapshot of 2026-09-12"},"code_links":[{"paper_slug":"roaring-bitmaps-implementation-of-an","repo_url":"https://github.com/RoaringBitmap/CRoaring","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"roaring-bitmaps-implementation-of-an","repo_url":"https://github.com/lemire/EWAHBoolArray","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"roaring-bitmaps-implementation-of-an","repo_url":"https://github.com/BeSky/CRoaring","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"roaring-bitmaps-implementation-of-an","repo_url":"https://github.com/BeSky/RoaringBitmap","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"roaring-bitmaps-implementation-of-an","repo_url":"https://github.com/Budome/No","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"roaring-bitmaps-implementation-of-an","repo_url":"https://github.com/RoaringBitmap/RoaringBitmap","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"roaring-bitmaps-implementation-of-an","repo_url":"https://github.com/RoaringBitmap/SwiftRoaring","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"roaring-bitmaps-implementation-of-an","repo_url":"https://github.com/RoaringBitmap/gocroaring","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"roaring-bitmaps-implementation-of-an","repo_url":"https://github.com/RoaringBitmap/roaring","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"roaring-bitmaps-implementation-of-an","repo_url":"https://github.com/casualjim/go-roaring64","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"roaring-bitmaps-implementation-of-an","repo_url":"https://github.com/gguzun/hybridCPP","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"roaring-bitmaps-implementation-of-an","repo_url":"https://github.com/hochoy18/RoaringBitmap","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"roaring-bitmaps-implementation-of-an","repo_url":"https://github.com/lemire/RoaringBitmap","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"roaring-bitmaps-implementation-of-an","repo_url":"https://github.com/piotte13/SwiftRoaring","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"roaring-bitmaps-implementation-of-an","repo_url":"https://github.com/sagpant/EWAHBoolArray","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":null,"mcp":null,"developers":"https://syntology.ai/developers"},"arxiv_metadata":null,"syntology_extracted_results":null}