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_r308942567
 
 

 ##########
 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.
-    // So it is easier to reconstruct them by wrapping memory then to keep 
position-to-object mappings. 
-    new Union(lgK, mem);
+    // Copy prebuilt empty sketch object.
 
 Review comment:
   should be union here

----------------------------------------------------------------
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]

Reply via email to