diff options
-rw-r--r-- | searchlib/src/tests/fef/fef_test.cpp | 15 | ||||
-rw-r--r-- | searchlib/src/tests/fef/termfieldmodel/termfieldmodel_test.cpp | 4 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/fef/termfieldmatchdata.cpp | 5 |
3 files changed, 13 insertions, 11 deletions
diff --git a/searchlib/src/tests/fef/fef_test.cpp b/searchlib/src/tests/fef/fef_test.cpp index 4d1163de6ee..50f8a770618 100644 --- a/searchlib/src/tests/fef/fef_test.cpp +++ b/searchlib/src/tests/fef/fef_test.cpp @@ -67,12 +67,11 @@ TEST("test TermFieldMatchDataAppend") EXPECT_EQUAL(1u, tmd.capacity()); tmd.appendPosition(pos); EXPECT_EQUAL(2u, tmd.size()); - EXPECT_EQUAL(2u, tmd.capacity()); + EXPECT_EQUAL(42u, tmd.capacity()); uint32_t resizeCount(0); const TermFieldMatchDataPosition * prev = tmd.begin(); for (size_t i(2); i < std::numeric_limits<uint16_t>::max(); i++) { EXPECT_EQUAL(i, tmd.size()); - EXPECT_EQUAL(std::min(size_t(std::numeric_limits<uint16_t>::max()), vespalib::roundUp2inN(i)), tmd.capacity()); tmd.appendPosition(pos); const TermFieldMatchDataPosition * cur = tmd.begin(); if (cur != prev) { @@ -80,13 +79,15 @@ TEST("test TermFieldMatchDataAppend") resizeCount++; } } - EXPECT_EQUAL(15u, resizeCount); - EXPECT_EQUAL(std::numeric_limits<uint16_t>::max(), tmd.size()); - EXPECT_EQUAL(std::numeric_limits<uint16_t>::max(), tmd.capacity()); - tmd.appendPosition(pos); - EXPECT_EQUAL(prev, tmd.begin()); + EXPECT_EQUAL(11u, resizeCount); EXPECT_EQUAL(std::numeric_limits<uint16_t>::max(), tmd.size()); EXPECT_EQUAL(std::numeric_limits<uint16_t>::max(), tmd.capacity()); + for (size_t i(0); i < 10; i++) { + tmd.appendPosition(pos); + EXPECT_EQUAL(prev, tmd.begin()); + EXPECT_EQUAL(std::numeric_limits<uint16_t>::max(), tmd.size()); + EXPECT_EQUAL(std::numeric_limits<uint16_t>::max(), tmd.capacity()); + } } TEST("verify size of essential fef classes") { diff --git a/searchlib/src/tests/fef/termfieldmodel/termfieldmodel_test.cpp b/searchlib/src/tests/fef/termfieldmodel/termfieldmodel_test.cpp index a75b91cb78a..3de34047ecd 100644 --- a/searchlib/src/tests/fef/termfieldmodel/termfieldmodel_test.cpp +++ b/searchlib/src/tests/fef/termfieldmodel/termfieldmodel_test.cpp @@ -215,11 +215,11 @@ TEST("append positions") { tfmd.appendPosition(pos); tfmd.appendPosition(pos2); EXPECT_EQUAL(2u, tfmd.size()); - EXPECT_EQUAL(2u, tfmd.capacity()); + EXPECT_EQUAL(42u, tfmd.capacity()); TermFieldMatchDataPosition pos3(0x31020304, 0x30203040, 0x31223344, 0x32345678); tfmd.appendPosition(pos3); EXPECT_EQUAL(3u, tfmd.size()); - EXPECT_EQUAL(4u, tfmd.capacity()); + EXPECT_EQUAL(42u, tfmd.capacity()); EXPECT_EQUAL(0x01020304u, tfmd.begin()->getElementId()); EXPECT_EQUAL(0x10203040u, tfmd.begin()->getPosition()); EXPECT_EQUAL(0x11223344, tfmd.begin()->getElementWeight()); diff --git a/searchlib/src/vespa/searchlib/fef/termfieldmatchdata.cpp b/searchlib/src/vespa/searchlib/fef/termfieldmatchdata.cpp index 781135bf246..7e3e0f5e4bc 100644 --- a/searchlib/src/vespa/searchlib/fef/termfieldmatchdata.cpp +++ b/searchlib/src/vespa/searchlib/fef/termfieldmatchdata.cpp @@ -104,7 +104,8 @@ TermFieldMatchData::swap(TermFieldMatchData &rhs) namespace { -constexpr size_t MAX_ELEMS = std::numeric_limits<uint16_t>::max(); +constexpr size_t MAX_ELEMS = std::numeric_limits<uint16_t>::max(); +constexpr size_t INITIAL_ELEMS = 1024/sizeof(TermFieldMatchDataPosition); } @@ -128,7 +129,7 @@ TermFieldMatchData::allocateVector() { assert(_sz < 2); assert(!allocated()); - size_t newSize = 2; + size_t newSize = INITIAL_ELEMS; TermFieldMatchDataPosition * n = new TermFieldMatchDataPosition[newSize]; if (_sz > 0) { n[0] = *getFixed(); |