Package org.roaringbitmap.buffer
Class BufferFastAggregation
java.lang.Object
org.roaringbitmap.buffer.BufferFastAggregation
Fast algorithms to aggregate many bitmaps.
-
Method Summary
Modifier and TypeMethodDescriptionstatic MutableRoaringBitmapand(long[] aggregationBuffer, Iterator<? extends ImmutableRoaringBitmap> bitmaps)Compute the AND aggregate.static MutableRoaringBitmapand(long[] aggregationBuffer, ImmutableRoaringBitmap... bitmaps)Compute the AND aggregate.static MutableRoaringBitmapand(Iterator<? extends ImmutableRoaringBitmap> bitmaps)Compute the AND aggregate.static MutableRoaringBitmapand(ImmutableRoaringBitmap... bitmaps)Compute the AND aggregate.static MutableRoaringBitmapand(MutableRoaringBitmap... bitmaps)Compute the AND aggregate.static intandCardinality(ImmutableRoaringBitmap... bitmaps)Compute cardinality of the AND aggregate.static Iterator<ImmutableRoaringBitmap>Convenience method converting one type of iterator into another, to avoid unnecessary warnings.static MutableRoaringBitmaphorizontal_or(Iterator bitmaps)Deprecated.static MutableRoaringBitmaphorizontal_or(ImmutableRoaringBitmap... bitmaps)Minimizes memory usage while computing the or aggregate on a moderate number of bitmaps.static MutableRoaringBitmaphorizontal_or(MutableRoaringBitmap... bitmaps)Minimizes memory usage while computing the or aggregate on a moderate number of bitmaps.static MutableRoaringBitmaphorizontal_xor(ImmutableRoaringBitmap... bitmaps)Minimizes memory usage while computing the xor aggregate on a moderate number of bitmaps.static MutableRoaringBitmaphorizontal_xor(MutableRoaringBitmap... bitmaps)Minimizes memory usage while computing the xor aggregate on a moderate number of bitmaps.static MutableRoaringBitmapCompute overall AND between bitmaps two-by-two.static MutableRoaringBitmapnaive_and(ImmutableRoaringBitmap... bitmaps)Compute overall AND between bitmaps two-by-two.static MutableRoaringBitmapnaive_and(MutableRoaringBitmap... bitmaps)Compute overall AND between bitmaps two-by-two.static MutableRoaringBitmapCompute overall OR between bitmaps two-by-two.static MutableRoaringBitmapnaive_or(ImmutableRoaringBitmap... bitmaps)Compute overall OR between bitmaps two-by-two.static MutableRoaringBitmapnaive_or(MutableRoaringBitmap... bitmaps)Compute overall OR between bitmaps two-by-two.static MutableRoaringBitmapCompute overall XOR between bitmaps two-by-two.static MutableRoaringBitmapnaive_xor(ImmutableRoaringBitmap... bitmaps)Compute overall XOR between bitmaps two-by-two.static MutableRoaringBitmapnaive_xor(MutableRoaringBitmap... bitmaps)Compute overall XOR between bitmaps two-by-two.static MutableRoaringBitmapCompute overall OR between bitmaps.static MutableRoaringBitmapor(ImmutableRoaringBitmap... bitmaps)Compute overall OR between bitmaps.static MutableRoaringBitmapor(MutableRoaringBitmap... bitmaps)Compute overall OR between bitmaps.static intorCardinality(ImmutableRoaringBitmap... bitmaps)Compute cardinality of the OR aggregate.static MutableRoaringBitmappriorityqueue_or(Iterator bitmaps)Uses a priority queue to compute the or aggregate.static MutableRoaringBitmappriorityqueue_or(ImmutableRoaringBitmap... bitmaps)Uses a priority queue to compute the or aggregate.static MutableRoaringBitmappriorityqueue_xor(ImmutableRoaringBitmap... bitmaps)Uses a priority queue to compute the xor aggregate.static MutableRoaringBitmapworkAndMemoryShyAnd(long[] buffer, ImmutableRoaringBitmap... bitmaps)Computes the intersection by first intersecting the keys, avoids materialising containers, limits memory usage.static MutableRoaringBitmapCompute overall XOR between bitmaps.static MutableRoaringBitmapxor(ImmutableRoaringBitmap... bitmaps)Compute overall XOR between bitmaps.static MutableRoaringBitmapxor(MutableRoaringBitmap... bitmaps)Compute overall XOR between bitmaps.
-
Method Details
-
and
Compute the AND aggregate.- Parameters:
bitmaps- input bitmaps- Returns:
- aggregated bitmap
-
and
public static MutableRoaringBitmap and(long[] aggregationBuffer, ImmutableRoaringBitmap... bitmaps)Compute the AND aggregate.- Parameters:
aggregationBuffer- a memory buffer for use in the aggregation. Will be cleared after use.bitmaps- input bitmaps- Returns:
- aggregated bitmap
-
and
Compute the AND aggregate. In practice, calls {#link workShyAnd}- Parameters:
bitmaps- input bitmaps (ImmutableRoaringBitmap or MutableRoaringBitmap)- Returns:
- aggregated bitmap
-
and
public static MutableRoaringBitmap and(long[] aggregationBuffer, Iterator<? extends ImmutableRoaringBitmap> bitmaps)Compute the AND aggregate. In practice, calls {#link workShyAnd}- Parameters:
aggregationBuffer- a buffer for use in aggregationsbitmaps- input bitmaps (ImmutableRoaringBitmap or MutableRoaringBitmap)- Returns:
- aggregated bitmap
-
and
Compute the AND aggregate. In practice, calls {#link naive_and}- Parameters:
bitmaps- input bitmaps- Returns:
- aggregated bitmap
-
andCardinality
Compute cardinality of the AND aggregate.- Parameters:
bitmaps- input bitmaps- Returns:
- aggregated cardinality
-
orCardinality
Compute cardinality of the OR aggregate.- Parameters:
bitmaps- input bitmaps- Returns:
- aggregated cardinality
-
convertToImmutable
public static Iterator<ImmutableRoaringBitmap> convertToImmutable(Iterator<MutableRoaringBitmap> i)Convenience method converting one type of iterator into another, to avoid unnecessary warnings.- Parameters:
i- input bitmaps- Returns:
- an iterator over the provided iterator, with a different type
-
horizontal_or
Minimizes memory usage while computing the or aggregate on a moderate number of bitmaps. This function runs in linearithmic (O(n log n)) time with respect to the number of bitmaps.- Parameters:
bitmaps- input bitmaps- Returns:
- aggregated bitmap
- See Also:
or(ImmutableRoaringBitmap...)
-
horizontal_or
Deprecated.Calls naive_or.- Parameters:
bitmaps- input bitmaps (ImmutableRoaringBitmap or MutableRoaringBitmap)- Returns:
- aggregated bitmap
-
horizontal_or
Minimizes memory usage while computing the or aggregate on a moderate number of bitmaps. This function runs in linearithmic (O(n log n)) time with respect to the number of bitmaps.- Parameters:
bitmaps- input bitmaps- Returns:
- aggregated bitmap
- See Also:
or(ImmutableRoaringBitmap...)
-
horizontal_xor
Minimizes memory usage while computing the xor aggregate on a moderate number of bitmaps. This function runs in linearithmic (O(n log n)) time with respect to the number of bitmaps.- Parameters:
bitmaps- input bitmaps- Returns:
- aggregated bitmap
- See Also:
xor(ImmutableRoaringBitmap...)
-
horizontal_xor
Minimizes memory usage while computing the xor aggregate on a moderate number of bitmaps. This function runs in linearithmic (O(n log n)) time with respect to the number of bitmaps.- Parameters:
bitmaps- input bitmaps- Returns:
- aggregated bitmap
- See Also:
xor(ImmutableRoaringBitmap...)
-
naive_and
Compute overall AND between bitmaps two-by-two. This function runs in linear time with respect to the number of bitmaps.- Parameters:
bitmaps- input bitmaps- Returns:
- aggregated bitmap
-
naive_and
Compute overall AND between bitmaps two-by-two. This function runs in linear time with respect to the number of bitmaps.- Parameters:
bitmaps- input bitmaps (ImmutableRoaringBitmap or MutableRoaringBitmap)- Returns:
- aggregated bitmap
-
naive_and
Compute overall AND between bitmaps two-by-two. This function runs in linear time with respect to the number of bitmaps.- Parameters:
bitmaps- input bitmaps- Returns:
- aggregated bitmap
-
workAndMemoryShyAnd
public static MutableRoaringBitmap workAndMemoryShyAnd(long[] buffer, ImmutableRoaringBitmap... bitmaps)Computes the intersection by first intersecting the keys, avoids materialising containers, limits memory usage. You must provide a long[] array of length at least 1024, initialized with zeroes. We do not check whether the array is initialized with zeros: it is the caller's responsability. You should expect this function to be slower than workShyAnd and the reduction in memory usage might be small.- Parameters:
buffer- should be a 1024-long arraybitmaps- the inputs- Returns:
- the intersection of the bitmaps
-
naive_or
Compute overall OR between bitmaps two-by-two. This function runs in linear time with respect to the number of bitmaps.- Parameters:
bitmaps- input bitmaps- Returns:
- aggregated bitmap
-
naive_or
Compute overall OR between bitmaps two-by-two. This function runs in linear time with respect to the number of bitmaps.- Parameters:
bitmaps- input bitmaps (ImmutableRoaringBitmap or MutableRoaringBitmap)- Returns:
- aggregated bitmap
-
naive_or
Compute overall OR between bitmaps two-by-two. This function runs in linear time with respect to the number of bitmaps.- Parameters:
bitmaps- input bitmaps- Returns:
- aggregated bitmap
-
naive_xor
Compute overall XOR between bitmaps two-by-two. This function runs in linear time with respect to the number of bitmaps.- Parameters:
bitmaps- input bitmaps- Returns:
- aggregated bitmap
-
naive_xor
Compute overall XOR between bitmaps two-by-two. This function runs in linear time with respect to the number of bitmaps.- Parameters:
bitmaps- input bitmaps (ImmutableRoaringBitmap or MutableRoaringBitmap)- Returns:
- aggregated bitmap
-
naive_xor
Compute overall XOR between bitmaps two-by-two. This function runs in linear time with respect to the number of bitmaps.- Parameters:
bitmaps- input bitmaps- Returns:
- aggregated bitmap
-
or
Compute overall OR between bitmaps.- Parameters:
bitmaps- input bitmaps- Returns:
- aggregated bitmap
-
or
Compute overall OR between bitmaps.- Parameters:
bitmaps- input bitmaps (ImmutableRoaringBitmap or MutableRoaringBitmap)- Returns:
- aggregated bitmap
-
or
Compute overall OR between bitmaps.- Parameters:
bitmaps- input bitmaps- Returns:
- aggregated bitmap
-
priorityqueue_or
Uses a priority queue to compute the or aggregate. This function runs in linearithmic (O(n log n)) time with respect to the number of bitmaps.- Parameters:
bitmaps- input bitmaps- Returns:
- aggregated bitmap
- See Also:
horizontal_or(ImmutableRoaringBitmap...)
-
priorityqueue_or
Uses a priority queue to compute the or aggregate. This function runs in linearithmic (O(n log n)) time with respect to the number of bitmaps.- Parameters:
bitmaps- input bitmaps- Returns:
- aggregated bitmap
- See Also:
horizontal_or(ImmutableRoaringBitmap...)
-
priorityqueue_xor
Uses a priority queue to compute the xor aggregate. This function runs in linearithmic (O(n log n)) time with respect to the number of bitmaps.- Parameters:
bitmaps- input bitmaps- Returns:
- aggregated bitmap
- See Also:
horizontal_xor(ImmutableRoaringBitmap...)
-
xor
Compute overall XOR between bitmaps.- Parameters:
bitmaps- input bitmaps- Returns:
- aggregated bitmap
-
xor
Compute overall XOR between bitmaps.- Parameters:
bitmaps- input bitmaps (ImmutableRoaringBitmap or MutableRoaringBitmap)- Returns:
- aggregated bitmap
-
xor
Compute overall XOR between bitmaps.- Parameters:
bitmaps- input bitmaps- Returns:
- aggregated bitmap
-