aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraneporada <aneporada@ydb.tech>2023-08-10 22:54:21 +0300
committeraneporada <aneporada@ydb.tech>2023-08-10 23:27:07 +0300
commit7d3368d8862f8962f45c9042ef3f76d40379ef33 (patch)
treeb5e257ab527ce3589cc906fc96189783b1e2c4c9
parent46df6e7cd8f3d70231716cebc0751600bb93e97f (diff)
downloadydb-7d3368d8862f8962f45c9042ef3f76d40379ef33.tar.gz
Use more aggressive resizing when hash table is relatively small
initial
-rw-r--r--ydb/library/yql/minikql/comp_nodes/mkql_rh_hash.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_rh_hash.h b/ydb/library/yql/minikql/comp_nodes/mkql_rh_hash.h
index 88f5f0c500..2cc74026a5 100644
--- a/ydb/library/yql/minikql/comp_nodes/mkql_rh_hash.h
+++ b/ydb/library/yql/minikql/comp_nodes/mkql_rh_hash.h
@@ -227,7 +227,15 @@ private:
}
void Grow() {
- auto newCapacity = FindNearestPrime(Capacity * 2);
+ ui64 growFactor;
+ if (Capacity < 100'000) {
+ growFactor = 8;
+ } else if (Capacity < 1'000'000) {
+ growFactor = 4;
+ } else {
+ growFactor = 2;
+ }
+ auto newCapacity = FindNearestPrime(Capacity * growFactor);
char *newData, *newDataEnd;
Allocate(newCapacity, newData, newDataEnd);
Y_DEFER {