This simulation demonstrates how Roaring Bitmap splits a range of integers into fixed-size chunks and automatically selects the most space-efficient container, array, bitmap, or run-length-encoded, for each chunk based on its actual contents, and it visualizes how union and intersection operations are resolved container by container instead of value by value.
Add integers to two separate sets, either individually or as generated patterns such as sparse random values, dense clusters, or consecutive runs, and watch which container type is chosen for each chunk. Then trigger a union or intersection to see how matching chunks are combined and how non-matching chunks are copied or skipped entirely without inspecting individual values.
Controls let you insert sparse, dense, or run-patterned integers into two bitmaps, inspect the container type chosen for each active chunk, and run union or intersection operations to visualize container-by-container set processing.
Did you know that a single Roaring Bitmap can hold some chunks stored as tiny arrays, others as full bitmaps, and others as compact runs, all at the same time, with the format chosen independently for every chunk based purely on what makes that specific chunk smallest?
This simulation demonstrates how Roaring Bitmap splits a range of integers into fixed-size chunks and automatically selects the most space-efficient container, array, bitmap, or run-length-encoded, for each chunk based on its actual contents, and it visualizes how union and intersection operations are resolved container by container instead of value by value.
This simulation demonstrates how Roaring Bitmap splits a range of integers into fixed-size chunks and automatically selects the most space-efficient container, array, bitmap, or run-length-encoded, for each chunk based on its actual contents, and it visualizes how union and intersection operations are resolved container by container instead of value by value.
Add integers to two separate sets, either individually or as generated patterns such as sparse random values, dense clusters, or consecutive runs, and watch which container type is chosen for each chunk. Then trigger a union or intersection to see how matching chunks are combined and how non-matching chunks are copied or skipped entirely without inspecting individual values.
Did you know that a single Roaring Bitmap can hold some chunks stored as tiny arrays, others as full bitmaps, and others as compact runs, all at the same time, with the format chosen independently for every chunk based purely on what makes that specific chunk smallest?