diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2019-01-29 16:52:26 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-29 16:52:26 +0100 |
commit | b4cdca9da09b87f1a6782b6e7afff7d98f6ac06d (patch) | |
tree | 842ef1f3eb617052b4f7d1eae3be213e9e5b763d | |
parent | d09190c8a7d1a332f33d0bd70449e4e3d2f930de (diff) | |
parent | b30813a6e74187ba07d7f70dbd1986659ed1990b (diff) |
Merge pull request #8283 from vespa-engine/balder/factor-is-not-percent-dot-dot
Be consistent with factors and percentages MERGEOK
4 files changed, 32 insertions, 27 deletions
diff --git a/searchcommon/src/tests/attribute/config/attribute_config_test.cpp b/searchcommon/src/tests/attribute/config/attribute_config_test.cpp index d0a2f693473..99de79b8976 100644 --- a/searchcommon/src/tests/attribute/config/attribute_config_test.cpp +++ b/searchcommon/src/tests/attribute/config/attribute_config_test.cpp @@ -7,6 +7,7 @@ using search::attribute::Config; using search::attribute::BasicType; using search::attribute::CollectionType; using vespalib::eval::ValueType; +using search::GrowStrategy; struct Fixture @@ -100,5 +101,14 @@ TEST("test operator== on attribute config for tensor type") EXPECT_TRUE(cfg1 != cfg3); } +TEST("Test GrowStrategy consistency") { + GrowStrategy g(1024, 0.5, 17, 0.4f); + EXPECT_EQUAL(1024u, g.getDocsInitialCapacity()); + EXPECT_EQUAL(50u, g.getDocsGrowPercent()); + EXPECT_EQUAL(0.5, g.getDocsGrowFactor()); + EXPECT_EQUAL(17u, g.getDocsGrowDelta()); + EXPECT_EQUAL(0.4f, g.getMultiValueAllocGrowFactor()); +} + TEST_MAIN() { TEST_RUN_ALL(); } diff --git a/searchcommon/src/vespa/searchcommon/common/growstrategy.h b/searchcommon/src/vespa/searchcommon/common/growstrategy.h index f772d9f8e10..5af9f9f16fe 100644 --- a/searchcommon/src/vespa/searchcommon/common/growstrategy.h +++ b/searchcommon/src/vespa/searchcommon/common/growstrategy.h @@ -10,32 +10,29 @@ class GrowStrategy { private: uint32_t _docsInitialCapacity; - uint32_t _docsGrowPercent; + float _docsGrowFactor; uint32_t _docsGrowDelta; float _multiValueAllocGrowFactor; public: GrowStrategy() - : GrowStrategy(1024, 50, 0, 0.2) + : GrowStrategy(1024, 0.5, 0, 0.2) {} - GrowStrategy(uint32_t docsInitialCapacity, - uint32_t docsGrowPercent, - uint32_t docsGrowDelta, - float multiValueAllocGrowFactor) + GrowStrategy(uint32_t docsInitialCapacity, float docsGrowPercent, + uint32_t docsGrowDelta, float multiValueAllocGrowFactor) : _docsInitialCapacity(docsInitialCapacity), - _docsGrowPercent(docsGrowPercent), + _docsGrowFactor(docsGrowPercent), _docsGrowDelta(docsGrowDelta), _multiValueAllocGrowFactor(multiValueAllocGrowFactor) { } - static GrowStrategy make(uint32_t docsInitialCapacity, - uint32_t docsGrowPercent, - uint32_t docsGrowDelta) { - return GrowStrategy(docsInitialCapacity, docsGrowPercent, docsGrowDelta, 0.2); + static GrowStrategy make(uint32_t docsInitialCapacity, float docsGrowFactor, uint32_t docsGrowDelta) { + return GrowStrategy(docsInitialCapacity, docsGrowFactor, docsGrowDelta, 0.2); } uint32_t getDocsInitialCapacity() const { return _docsInitialCapacity; } - uint32_t getDocsGrowPercent() const { return _docsGrowPercent; } + uint32_t getDocsGrowPercent() const { return _docsGrowFactor*100; } + float getDocsGrowFactor() const { return _docsGrowFactor; } uint32_t getDocsGrowDelta() const { return _docsGrowDelta; } float getMultiValueAllocGrowFactor() const { return _multiValueAllocGrowFactor; } void setDocsInitialCapacity(uint32_t v) { _docsInitialCapacity = v; } @@ -43,7 +40,7 @@ public: bool operator==(const GrowStrategy & rhs) const { return _docsInitialCapacity == rhs._docsInitialCapacity && - _docsGrowPercent == rhs._docsGrowPercent && + _docsGrowFactor == rhs._docsGrowFactor && _docsGrowDelta == rhs._docsGrowDelta && _multiValueAllocGrowFactor == rhs._multiValueAllocGrowFactor; } diff --git a/searchlib/src/tests/attribute/attribute_test.cpp b/searchlib/src/tests/attribute/attribute_test.cpp index fd95a3716d3..4e38bd45f9d 100644 --- a/searchlib/src/tests/attribute/attribute_test.cpp +++ b/searchlib/src/tests/attribute/attribute_test.cpp @@ -2145,7 +2145,7 @@ AttributeTest::testReaderDuringLastUpdate(const Config &config, bool fs, bool co string name(ss.str()); Config cfg = config; cfg.setFastSearch(fs); - cfg.setGrowStrategy(GrowStrategy::make(100, 50, 0)); + cfg.setGrowStrategy(GrowStrategy::make(100, 0.5, 0)); LOG(info, "testReaderDuringLastUpdate(%s)", name.c_str()); AttributePtr attr = AttributeFactory::createAttribute(name, cfg); diff --git a/searchlib/src/vespa/searchlib/attribute/flagattribute.cpp b/searchlib/src/vespa/searchlib/attribute/flagattribute.cpp index 449ec0cd86d..a38cbe60e56 100644 --- a/searchlib/src/vespa/searchlib/attribute/flagattribute.cpp +++ b/searchlib/src/vespa/searchlib/attribute/flagattribute.cpp @@ -108,7 +108,7 @@ bool FlagAttributeT<B>::onLoad() { for (size_t i(0), m(_bitVectors.size()); i < m; i++) { _bitVectorStore[i].reset(); - _bitVectors[i] = NULL; + _bitVectors[i] = nullptr; } _bitVectorSize = 0; return B::onLoad(); @@ -125,7 +125,7 @@ void FlagAttributeT<B>::setNewValues(DocId doc, const std::vector<typename B::WT typename B::WType value = values[i]; uint32_t offset = getOffset(value); BitVector * bv = _bitVectors[offset]; - if (bv == NULL) { + if (bv == nullptr) { assert(_bitVectorSize >= this->getNumDocs()); _bitVectorStore[offset] = BitVector::create(_bitVectorSize); _bitVectors[offset] = _bitVectorStore[offset].get(); @@ -143,7 +143,7 @@ FlagAttributeT<B>::setNewBVValue(DocId doc, typename B::WType::ValueType value) { uint32_t offset = getOffset(value); BitVector * bv = _bitVectors[offset]; - if (bv == NULL) { + if (bv == nullptr) { assert(_bitVectorSize >= this->getNumDocs()); _bitVectorStore[offset] = BitVector::create(_bitVectorSize); _bitVectors[offset] = _bitVectorStore[offset].get(); @@ -195,7 +195,7 @@ FlagAttributeT<B>::ensureGuardBit() { for (uint32_t i = 0; i < _bitVectors.size(); ++i) { BitVector * bv = _bitVectors[i]; - if (bv != NULL) { + if (bv != nullptr) { ensureGuardBit(*bv); } } @@ -207,7 +207,7 @@ FlagAttributeT<B>::clearGuardBit(DocId doc) { for (uint32_t i = 0; i < _bitVectors.size(); ++i) { BitVector * bv = _bitVectors[i]; - if (bv != NULL) { + if (bv != nullptr) { bv->clearBit(doc); // clear guard bit and start using this doc id } } @@ -218,10 +218,10 @@ void FlagAttributeT<B>::resizeBitVectors(uint32_t neededSize) { const GrowStrategy & gs = this->getConfig().getGrowStrategy(); - uint32_t newSize = neededSize + (neededSize * gs.getDocsGrowPercent() / 100) + gs.getDocsGrowDelta(); + uint32_t newSize = neededSize + (neededSize * gs.getDocsGrowFactor()) + gs.getDocsGrowDelta(); for (uint32_t i = 0; i < _bitVectors.size(); ++i) { BitVector * bv = _bitVectors[i]; - if (bv != NULL) { + if (bv != nullptr) { vespalib::GenerationHeldBase::UP hold(bv->grow(newSize)); ensureGuardBit(*bv); _bitVectorHolder.hold(std::move(hold)); @@ -249,18 +249,16 @@ FlagAttributeT<B>::SearchContext::SearchContext(QueryTermSimple::UP qTerm, const template <typename B> SearchIterator::UP -FlagAttributeT<B>::SearchContext::createIterator(fef::TermFieldMatchData * - matchData, - bool strict) +FlagAttributeT<B>::SearchContext::createIterator(fef::TermFieldMatchData * matchData, bool strict) { if (valid()) { if (_low == _high) { const Attribute & attr(static_cast<const Attribute &>(attribute())); const BitVector * bv(attr.getBitVector(_low)); - if (bv != NULL) { + if (bv != nullptr) { return BitVectorIterator::create(bv, attr.getCommittedDocIdLimit(), *matchData, strict); } else { - return SearchIterator::UP(new queryeval::EmptySearch()); + return std::make_unique<queryeval::EmptySearch>(); } } else { SearchIterator::UP flagIterator( @@ -270,7 +268,7 @@ FlagAttributeT<B>::SearchContext::createIterator(fef::TermFieldMatchData * return flagIterator; } } else { - return SearchIterator::UP(new queryeval::EmptySearch()); + return std::make_unique<queryeval::EmptySearch>(); } } |