diff options
author | Geir Storli <geirst@oath.com> | 2018-01-22 12:47:29 +0000 |
---|---|---|
committer | Geir Storli <geirst@oath.com> | 2018-01-22 12:47:29 +0000 |
commit | 6b8cccc45e2580298f48462d9341e32a1ae22b8f (patch) | |
tree | 8bd71b7b6d74c2e41a19f1abe4eae8671efd80f3 /searchcommon | |
parent | eac3947f1275207660547f040b69127c18c08bff (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.h | 35 |
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)); |