AlexanderSaydakov commented on a change in pull request #8194: HllSketch
Merge/Build BufferAggregators: Speed up init with prebuilt sketch.
URL: https://github.com/apache/incubator-druid/pull/8194#discussion_r308979196
##########
File path:
extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchMergeBufferAggregator.java
##########
@@ -60,17 +69,25 @@ public HllSketchMergeBufferAggregator(
this.lgK = lgK;
this.tgtHllType = tgtHllType;
this.size = size;
+ this.emptyUnion = new byte[size];
+
+ //noinspection ResultOfObjectAllocationIgnored (Union writes to
"emptyUnion" as a side effect of construction)
+ new Union(lgK, WritableMemory.wrap(emptyUnion));
}
- @SuppressWarnings("ResultOfObjectAllocationIgnored")
@Override
public void init(final ByteBuffer buf, final int position)
{
- final WritableMemory mem = WritableMemory.wrap(buf,
ByteOrder.LITTLE_ENDIAN).writableRegion(position, size);
- // Not necessary to keep the constructed object since it is cheap to
reconstruct by wrapping the memory.
- // The objects are not cached as in BuildBufferAggregator since they never
exceed the max size and never move.
Review comment:
In aggregate() they are updated, but constructed in init()
The comment is about why "new" was called and the result not kept, and also
why there is no caching like in the build aggregator.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]