summaryrefslogtreecommitdiffstats
path: root/vespalib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-12-07 21:44:48 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2020-12-07 21:44:48 +0000
commit8d9b53d6baf2be693383dbf559396cb1e1616187 (patch)
tree8562cb3cf2e2fd85134ed5fb1dfc7a3b97c65dac /vespalib
parent82d1a71afff67b0004291be4091d8a00d0dfa79e (diff)
Simplify simple method to find next hashtable size.
Diffstat (limited to 'vespalib')
-rw-r--r--vespalib/src/vespa/vespalib/stllike/hashtable.cpp23
-rw-r--r--vespalib/src/vespa/vespalib/stllike/hashtable.h6
2 files changed, 6 insertions, 23 deletions
diff --git a/vespalib/src/vespa/vespalib/stllike/hashtable.cpp b/vespalib/src/vespa/vespalib/stllike/hashtable.cpp
index 52639fd6275..1b62149d96e 100644
--- a/vespalib/src/vespa/vespalib/stllike/hashtable.cpp
+++ b/vespalib/src/vespa/vespalib/stllike/hashtable.cpp
@@ -14,19 +14,6 @@ static const unsigned long __stl_prime_list[] =
402653189ul, 805306457ul, 1610612741ul, 3221225473ul, 4294967291ul
};
-static const unsigned long __simple_modulator_list[] =
-{
- 0x8ul,
- 0x10ul, 0x20ul, 0x40ul, 0x80ul,
- 0x100ul, 0x200ul, 0x400ul, 0x800ul,
- 0x1000ul, 0x2000ul, 0x4000ul, 0x8000ul,
- 0x10000ul, 0x20000ul, 0x40000ul, 0x80000ul,
- 0x100000ul, 0x200000ul, 0x400000ul, 0x800000ul,
- 0x1000000ul, 0x2000000ul, 0x4000000ul, 0x8000000ul,
- 0x10000000ul, 0x20000000ul, 0x40000000ul, 0x80000000ul,
- 0x100000000ul
-};
-
}
namespace vespalib {
@@ -41,15 +28,9 @@ hashtable_base::getModulo(size_t newSize, const unsigned long * list, size_t sz)
}
size_t
-hashtable_base::getModuloStl(size_t newSize)
-{
- return getModulo(newSize, __stl_prime_list, sizeof(__stl_prime_list)/sizeof(__stl_prime_list[0]));
-}
-
-size_t
-hashtable_base::getModuloSimple(size_t newSize)
+hashtable_base::getModuloStl(size_t size)
{
- return getModulo(newSize, __simple_modulator_list, sizeof(__simple_modulator_list)/sizeof(__simple_modulator_list[0]));
+ return getModulo(size, __stl_prime_list, sizeof(__stl_prime_list)/sizeof(__stl_prime_list[0]));
}
}
diff --git a/vespalib/src/vespa/vespalib/stllike/hashtable.h b/vespalib/src/vespa/vespalib/stllike/hashtable.h
index 8c9d36e86ad..4e1f14843cc 100644
--- a/vespalib/src/vespa/vespalib/stllike/hashtable.h
+++ b/vespalib/src/vespa/vespalib/stllike/hashtable.h
@@ -79,8 +79,10 @@ public:
private:
next_t _mask;
};
- static size_t getModuloStl(size_t newSize);
- static size_t getModuloSimple(size_t newSize);
+ static size_t getModuloStl(size_t size);
+ static size_t getModuloSimple(size_t size) {
+ return std::max(size_t(8), roundUp2inN(size));
+ }
protected:
struct DefaultMoveHandler
{