diff options
-rw-r--r-- | vespalib/src/tests/shared_string_repo/shared_string_repo_test.cpp | 21 | ||||
-rw-r--r-- | vespalib/src/vespa/vespalib/util/shared_string_repo.h | 10 |
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; |