diff options
author | aneporada <aneporada@ydb.tech> | 2023-08-10 22:54:21 +0300 |
---|---|---|
committer | aneporada <aneporada@ydb.tech> | 2023-08-10 23:27:07 +0300 |
commit | 7d3368d8862f8962f45c9042ef3f76d40379ef33 (patch) | |
tree | b5e257ab527ce3589cc906fc96189783b1e2c4c9 | |
parent | 46df6e7cd8f3d70231716cebc0751600bb93e97f (diff) | |
download | ydb-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.h | 10 |
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 { |