This is an automated email from the ASF dual-hosted git repository.

xiangfu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git


The following commit(s) were added to refs/heads/master by this push:
     new 62799a3  Improve GroupBy query performance by setting initial size for 
OpenHashMap used in DictionaryBasedGroupKeyGenerator. (#5291)
62799a3 is described below

commit 62799a32c99615e8d08f0ce9e7f72fe5e666477d
Author: Xiang Fu <[email protected]>
AuthorDate: Thu Apr 23 11:36:43 2020 -0700

    Improve GroupBy query performance by setting initial size for OpenHashMap 
used in DictionaryBasedGroupKeyGenerator. (#5291)
---
 .../groupby/DictionaryBasedGroupKeyGenerator.java   | 21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/groupby/DictionaryBasedGroupKeyGenerator.java
 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/groupby/DictionaryBasedGroupKeyGenerator.java
index fc0e55b..e2da862 100644
--- 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/groupby/DictionaryBasedGroupKeyGenerator.java
+++ 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/groupby/DictionaryBasedGroupKeyGenerator.java
@@ -109,15 +109,15 @@ public class DictionaryBasedGroupKeyGenerator implements 
GroupKeyGenerator {
 
     if (longOverflow) {
       _globalGroupIdUpperBound = numGroupsLimit;
-      _rawKeyHolder = new ArrayMapBasedHolder();
+      _rawKeyHolder = new ArrayMapBasedHolder(_globalGroupIdUpperBound);
     } else {
       if (cardinalityProduct > Integer.MAX_VALUE) {
         _globalGroupIdUpperBound = numGroupsLimit;
-        _rawKeyHolder = new LongMapBasedHolder();
+        _rawKeyHolder = new LongMapBasedHolder(_globalGroupIdUpperBound);
       } else {
         _globalGroupIdUpperBound = Math.min((int) cardinalityProduct, 
numGroupsLimit);
         if (cardinalityProduct > arrayBasedThreshold) {
-          _rawKeyHolder = new IntMapBasedHolder();
+          _rawKeyHolder = new IntMapBasedHolder(_globalGroupIdUpperBound);
         } else {
           _rawKeyHolder = new ArrayBasedHolder();
         }
@@ -259,11 +259,12 @@ public class DictionaryBasedGroupKeyGenerator implements 
GroupKeyGenerator {
   }
 
   private class IntMapBasedHolder implements RawKeyHolder {
-    private final Int2IntOpenHashMap _rawKeyToGroupIdMap = new 
Int2IntOpenHashMap();
+    private final Int2IntOpenHashMap _rawKeyToGroupIdMap;
 
     private int _numGroups = 0;
 
-    public IntMapBasedHolder() {
+    public IntMapBasedHolder(int initialSize) {
+      _rawKeyToGroupIdMap = new Int2IntOpenHashMap(initialSize);
       _rawKeyToGroupIdMap.defaultReturnValue(INVALID_ID);
     }
 
@@ -437,11 +438,12 @@ public class DictionaryBasedGroupKeyGenerator implements 
GroupKeyGenerator {
   }
 
   private class LongMapBasedHolder implements RawKeyHolder {
-    private final Long2IntOpenHashMap _rawKeyToGroupIdMap = new 
Long2IntOpenHashMap();
+    private final Long2IntOpenHashMap _rawKeyToGroupIdMap;
 
     private int _numGroups = 0;
 
-    public LongMapBasedHolder() {
+    public LongMapBasedHolder(int initialSize) {
+      _rawKeyToGroupIdMap = new Long2IntOpenHashMap(initialSize);
       _rawKeyToGroupIdMap.defaultReturnValue(INVALID_ID);
     }
 
@@ -607,11 +609,12 @@ public class DictionaryBasedGroupKeyGenerator implements 
GroupKeyGenerator {
   }
 
   private class ArrayMapBasedHolder implements RawKeyHolder {
-    private final Object2IntOpenHashMap<IntArray> _rawKeyToGroupIdMap = new 
Object2IntOpenHashMap<>();
+    private final Object2IntOpenHashMap<IntArray> _rawKeyToGroupIdMap;
 
     private int _numGroups = 0;
 
-    public ArrayMapBasedHolder() {
+    public ArrayMapBasedHolder(int initialSize) {
+      _rawKeyToGroupIdMap = new Object2IntOpenHashMap<>(initialSize);
       _rawKeyToGroupIdMap.defaultReturnValue(INVALID_ID);
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to