Class ParallelAggregation


  • public class ParallelAggregation
    extends Object
    These utility methods provide parallel implementations of logical aggregation operators. AND is not implemented because it is unlikely to be profitable. There is a temporary memory overhead in using these methods, since a materialisation of the rotated containers grouped by key is created in each case. Each method executes on the default fork join pool by default. If this is undesirable (it usually is) wrap the call inside a submission of a runnable to your own thread pool.
     
    
           //...
    
           ExecutorService executor = ...
           RoaringBitmap[] bitmaps = ...
           // executes on executors threads
           RoaringBitmap result = executor.submit(() -> ParallelAggregation.or(bitmaps)).get();
     
     
    • Constructor Detail

      • ParallelAggregation

        public ParallelAggregation()
    • Method Detail

      • groupByKey

        public static SortedMap<Short,​List<Container>> groupByKey​(RoaringBitmap... bitmaps)
        Groups the containers by their keys
        Parameters:
        bitmaps - input bitmaps
        Returns:
        The containers from the bitmaps grouped by key
      • or

        public static RoaringBitmap or​(RoaringBitmap... bitmaps)
        Computes the bitwise union of the input bitmaps
        Parameters:
        bitmaps - the input bitmaps
        Returns:
        the union of the bitmaps
      • xor

        public static RoaringBitmap xor​(RoaringBitmap... bitmaps)
        Computes the bitwise symmetric difference of the input bitmaps
        Parameters:
        bitmaps - the input bitmaps
        Returns:
        the symmetric difference of the bitmaps