public class Historical1SimpleDoubleAggPooledTopNScannerPrototype extends Object implements Historical1AggPooledTopNScanner<HistoricalDimensionSelector,HistoricalColumnSelector,SimpleDoubleBufferAggregator>
Constructor and Description |
---|
Historical1SimpleDoubleAggPooledTopNScannerPrototype() |
Modifier and Type | Method and Description |
---|---|
long |
scanAndAggregate(HistoricalDimensionSelector dimensionSelector,
HistoricalColumnSelector metricSelector,
SimpleDoubleBufferAggregator aggregator,
int aggregatorSize,
HistoricalCursor cursor,
int[] positions,
ByteBuffer resultsBuffer)
Any changes to this method should be coordinated with
TopNUtils , PooledTopNAlgorithm.computeSpecializedScanAndAggregateImplementations() and downstream methods. |
public Historical1SimpleDoubleAggPooledTopNScannerPrototype()
public long scanAndAggregate(HistoricalDimensionSelector dimensionSelector, HistoricalColumnSelector metricSelector, SimpleDoubleBufferAggregator aggregator, int aggregatorSize, HistoricalCursor cursor, int[] positions, ByteBuffer resultsBuffer)
TopNUtils
, 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.specializeHistorical1SimpleDoubleAggPooledTopN
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.scanAndAggregate
in interface Historical1AggPooledTopNScanner<HistoricalDimensionSelector,HistoricalColumnSelector,SimpleDoubleBufferAggregator>
aggregatorSize
- number of bytes required by aggregator for a single aggregationpositions
- a cache for positions in resultsBuffer, where specific (indexed) dimension values are aggregatedCopyright © 2011–2018. All rights reserved.