summaryrefslogtreecommitdiffstats
path: root/vespalib
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@yahooinc.com>2022-06-13 13:51:40 +0000
committerHåvard Pettersen <havardpe@yahooinc.com>2022-06-13 13:51:40 +0000
commit6847194976b7508336b56b4985ae3cc031872bd1 (patch)
tree9bd3ce61045dc36f9b640008f61a9a2360ceaf49 /vespalib
parent281dcc3cf87f432aade48d289f538fbb5e9ff514 (diff)
shared string repo tweaks
- 64 -> 256 partitions - 99999 -> 9999999 maximum small number
Diffstat (limited to 'vespalib')
-rw-r--r--vespalib/src/tests/shared_string_repo/shared_string_repo_test.cpp21
-rw-r--r--vespalib/src/vespa/vespalib/util/shared_string_repo.h10
2 files changed, 17 insertions, 14 deletions
diff --git a/vespalib/src/tests/shared_string_repo/shared_string_repo_test.cpp b/vespalib/src/tests/shared_string_repo/shared_string_repo_test.cpp
index 5b267c3b9e9..d128e5b8c49 100644
--- a/vespalib/src/tests/shared_string_repo/shared_string_repo_test.cpp
+++ b/vespalib/src/tests/shared_string_repo/shared_string_repo_test.cpp
@@ -316,14 +316,14 @@ TEST("require that id_space_usage is sane") {
}
TEST("require that initial stats are as expected") {
- size_t num_parts = 64;
+ size_t num_parts = 256;
size_t part_size = 128;
size_t hash_node_size = 12;
size_t entry_size = 72;
- size_t initial_entries = 113;
- size_t initial_hash_used = 64;
- size_t initial_hash_allocated = 128;
- size_t part_limit = (uint32_t(-1) - 100001) / num_parts;
+ size_t initial_entries = 28;
+ size_t initial_hash_used = 16;
+ size_t initial_hash_allocated = 32;
+ size_t part_limit = (uint32_t(-1) - 10000001) / num_parts;
auto stats = SharedStringRepo::stats();
EXPECT_EQUAL(stats.active_entries, 0u);
EXPECT_EQUAL(stats.total_entries, num_parts * initial_entries);
@@ -437,13 +437,16 @@ void verify_not_direct(const vespalib::string &str) {
TEST("require that direct handles work as expected") {
TEST_DO(verify_direct("", -1));
- for (size_t i = 0; i < 100000; ++i) {
- verify_direct(fmt("%zu", i), i);
- }
+ TEST_DO(verify_direct("0", 0));
+ TEST_DO(verify_direct("1", 1));
+ TEST_DO(verify_direct("123", 123));
+ TEST_DO(verify_direct("456", 456));
+ TEST_DO(verify_direct("789", 789));
+ TEST_DO(verify_direct("9999999", 9999999));
TEST_DO(verify_not_direct(" "));
TEST_DO(verify_not_direct(" 5"));
TEST_DO(verify_not_direct("5 "));
- TEST_DO(verify_not_direct("100000"));
+ TEST_DO(verify_not_direct("10000000"));
TEST_DO(verify_not_direct("00"));
TEST_DO(verify_not_direct("01"));
TEST_DO(verify_not_direct("001"));
diff --git a/vespalib/src/vespa/vespalib/util/shared_string_repo.h b/vespalib/src/vespa/vespalib/util/shared_string_repo.h
index 99a120d1cc5..a55484537e2 100644
--- a/vespalib/src/vespa/vespalib/util/shared_string_repo.h
+++ b/vespalib/src/vespa/vespalib/util/shared_string_repo.h
@@ -42,11 +42,11 @@ public:
};
private:
- static constexpr uint32_t PART_BITS = 6;
+ static constexpr uint32_t PART_BITS = 8;
static constexpr uint32_t NUM_PARTS = 1 << PART_BITS;
static constexpr uint32_t PART_MASK = NUM_PARTS - 1;
- static constexpr uint32_t FAST_DIGITS = 5;
- static constexpr uint32_t FAST_ID_MAX = 99999;
+ static constexpr uint32_t FAST_DIGITS = 7;
+ static constexpr uint32_t FAST_ID_MAX = 9999999;
static constexpr uint32_t ID_BIAS = (FAST_ID_MAX + 2);
static constexpr size_t PART_LIMIT = (std::numeric_limits<uint32_t>::max() - ID_BIAS) / NUM_PARTS;
@@ -132,9 +132,9 @@ private:
public:
Partition()
- : _lock(), _entries(), _free(Entry::npos), _hash(128, Hash(), Equal(_entries))
+ : _lock(), _entries(), _free(Entry::npos), _hash(32, Hash(), Equal(_entries))
{
- make_entries(64);
+ make_entries(16);
}
~Partition();
void find_leaked_entries(size_t my_idx) const;