aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-01-29 16:52:26 +0100
committerGitHub <noreply@github.com>2019-01-29 16:52:26 +0100
commitb4cdca9da09b87f1a6782b6e7afff7d98f6ac06d (patch)
tree842ef1f3eb617052b4f7d1eae3be213e9e5b763d
parentd09190c8a7d1a332f33d0bd70449e4e3d2f930de (diff)
parentb30813a6e74187ba07d7f70dbd1986659ed1990b (diff)
Merge pull request #8283 from vespa-engine/balder/factor-is-not-percent-dot-dot
Be consistent with factors and percentages MERGEOK
-rw-r--r--searchcommon/src/tests/attribute/config/attribute_config_test.cpp10
-rw-r--r--searchcommon/src/vespa/searchcommon/common/growstrategy.h23
-rw-r--r--searchlib/src/tests/attribute/attribute_test.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/flagattribute.cpp24
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>();
}
}