Package org.apache.druid.query.topn
Class Generic1AggPooledTopNScannerPrototype
- java.lang.Object
-
- org.apache.druid.query.topn.Generic1AggPooledTopNScannerPrototype
-
- All Implemented Interfaces:
Generic1AggPooledTopNScanner
public final class Generic1AggPooledTopNScannerPrototype extends Object implements Generic1AggPooledTopNScanner
-
-
Constructor Summary
Constructors Constructor Description Generic1AggPooledTopNScannerPrototype()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description long
scanAndAggregate(DimensionSelector dimensionSelector, BufferAggregator aggregator, int aggregatorSize, Cursor cursor, int[] positions, ByteBuffer resultsBuffer)
Any changes to this method should be coordinated withTopNUtils
,PooledTopNAlgorithm.computeSpecializedScanAndAggregateImplementations()
and downstream methods.
-
-
-
Method Detail
-
scanAndAggregate
public long scanAndAggregate(DimensionSelector dimensionSelector, BufferAggregator aggregator, int aggregatorSize, Cursor cursor, int[] positions, ByteBuffer resultsBuffer)
Any changes to this method should be coordinated withTopNUtils
,PooledTopNAlgorithm.computeSpecializedScanAndAggregateImplementations()
and downstream methods. It should be checked with a tool like https://github.com/AdoptOpenJDK/jitwatch that C2 compiler output for this method doesn't have any method calls in the while loop, i. e. all method calls are inlined. To be able to see assembly of this method in JITWatch and other similar tools,PooledTopNAlgorithm.SPECIALIZE_GENERIC_ONE_AGG_POOLED_TOPN
should be turned off. Note that in this case the benchmark should be "naturally monomorphic", i. e. execute this method always with the same runtime shape. If the while loop contains not inlined method calls, it should be considered as a performance bug.- Specified by:
scanAndAggregate
in interfaceGeneric1AggPooledTopNScanner
aggregatorSize
- number of bytes required by aggregator for a single aggregationpositions
- a cache for positions in resultsBuffer, where specific (indexed) dimension values are aggregated- Returns:
- number of scanned rows, i. e. number of steps made with the given cursor
-
-