summaryrefslogtreecommitdiffstats
path: root/searchcommon
diff options
context:
space:
mode:
authorGeir Storli <geirst@oath.com>2018-01-22 12:47:29 +0000
committerGeir Storli <geirst@oath.com>2018-01-22 12:47:29 +0000
commit6b8cccc45e2580298f48462d9341e32a1ae22b8f (patch)
tree8bd71b7b6d74c2e41a19f1abe4eae8671efd80f3 /searchcommon
parenteac3947f1275207660547f040b69127c18c08bff (diff)
Add config for the alloc grow factor used when allocating buffers in multi-value attributes.
Diffstat (limited to 'searchcommon')
-rw-r--r--searchcommon/src/vespa/searchcommon/common/growstrategy.h35
1 files changed, 24 insertions, 11 deletions
diff --git a/searchcommon/src/vespa/searchcommon/common/growstrategy.h b/searchcommon/src/vespa/searchcommon/common/growstrategy.h
index 920e07e99f1..a0431b16d51 100644
--- a/searchcommon/src/vespa/searchcommon/common/growstrategy.h
+++ b/searchcommon/src/vespa/searchcommon/common/growstrategy.h
@@ -12,27 +12,40 @@ private:
uint32_t _docsInitialCapacity;
uint32_t _docsGrowPercent;
uint32_t _docsGrowDelta;
+ float _multiValueAllocGrowFactor;
public:
- GrowStrategy(uint32_t docsInitialCapacity = 1024,
- uint32_t docsGrowPercent = 50,
- uint32_t docsGrowDelta = 0)
+ GrowStrategy()
+ : GrowStrategy(1024, 50, 0, 0.2)
+ {}
+ GrowStrategy(uint32_t docsInitialCapacity,
+ uint32_t docsGrowPercent,
+ uint32_t docsGrowDelta,
+ float multiValueAllocGrowFactor)
: _docsInitialCapacity(docsInitialCapacity),
_docsGrowPercent(docsGrowPercent),
- _docsGrowDelta(docsGrowDelta)
+ _docsGrowDelta(docsGrowDelta),
+ _multiValueAllocGrowFactor(multiValueAllocGrowFactor)
{
}
- uint32_t getDocsInitialCapacity() const { return _docsInitialCapacity; }
- uint32_t getDocsGrowPercent() const { return _docsGrowPercent; }
- uint32_t getDocsGrowDelta() const { return _docsGrowDelta; }
- void setDocsInitialCapacity(uint32_t v) { _docsInitialCapacity = v; }
- void setDocsGrowPercent(uint32_t v) { _docsGrowPercent = v; }
- void setDocsGrowDelta(uint32_t v) { _docsGrowDelta = v; }
+ static GrowStrategy make(uint32_t docsInitialCapacity,
+ uint32_t docsGrowPercent,
+ uint32_t docsGrowDelta) {
+ return GrowStrategy(docsInitialCapacity, docsGrowPercent, docsGrowDelta, 0.2);
+ }
+
+ uint32_t getDocsInitialCapacity() const { return _docsInitialCapacity; }
+ uint32_t getDocsGrowPercent() const { return _docsGrowPercent; }
+ uint32_t getDocsGrowDelta() const { return _docsGrowDelta; }
+ float getMultiValueAllocGrowFactor() const { return _multiValueAllocGrowFactor; }
+ void setDocsInitialCapacity(uint32_t v) { _docsInitialCapacity = v; }
+ void setDocsGrowDelta(uint32_t v) { _docsGrowDelta = v; }
bool operator==(const GrowStrategy & rhs) const {
return _docsInitialCapacity == rhs._docsInitialCapacity &&
_docsGrowPercent == rhs._docsGrowPercent &&
- _docsGrowDelta == rhs._docsGrowDelta;
+ _docsGrowDelta == rhs._docsGrowDelta &&
+ _multiValueAllocGrowFactor == rhs._multiValueAllocGrowFactor;
}
bool operator!=(const GrowStrategy & rhs) const {
return !(operator==(rhs));