diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-01-19 18:53:55 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2017-01-19 18:53:55 +0100 |
commit | 06f476a7aa0a75948cc90c680f924aab0813adc4 (patch) | |
tree | a7261b0691daaf57f9745ccb7b9d04d636652c6f /searchcore | |
parent | d5c2b05cc9de42874417369429c80113ba66c197 (diff) |
Ensure that we allocate memory once.
Diffstat (limited to 'searchcore')
-rw-r--r-- | searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.cpp | 6 | ||||
-rw-r--r-- | searchcore/src/vespa/searchcore/proton/documentmetastore/lid_allocator.cpp | 5 |
2 files changed, 5 insertions, 6 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.cpp b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.cpp index 1be23ebdfc1..5abde5ce266 100644 --- a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.cpp +++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.cpp @@ -145,6 +145,7 @@ DocumentMetaStore::peekFreeLid() void DocumentMetaStore::ensureSpace(DocId lid) { + _metaDataStore.reserve(lid+1); while (lid >= _metaDataStore.size()) { _metaDataStore.push_back(RawDocumentMetaData()); } @@ -155,8 +156,7 @@ DocumentMetaStore::ensureSpace(DocId lid) } bool -DocumentMetaStore::insert(DocId lid, - const RawDocumentMetaData &metaData) +DocumentMetaStore::insert(DocId lid, const RawDocumentMetaData &metaData) { ensureSpace(lid); _metaDataStore[lid] = metaData; @@ -247,7 +247,7 @@ DocumentMetaStore::onLoad() unload(); size_t numElems = reader.getNumElems(); size_t docIdLimit = reader.getDocIdLimit(); - _metaDataStore.unsafe_reserve(numElems); + _metaDataStore.unsafe_reserve(std::max(numElems, docIdLimit)); TreeType::Builder treeBuilder(_gidToLidMap.getAllocator()); assert(docIdLimit > 0); // lid 0 is reserved ensureSpace(docIdLimit - 1); diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_allocator.cpp b/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_allocator.cpp index 6870eec8827..72f79b6c67e 100644 --- a/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_allocator.cpp +++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_allocator.cpp @@ -1,11 +1,10 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include <vespa/fastos/fastos.h> +#include "lid_allocator.h" + #include <vespa/log/log.h> LOG_SETUP(".proton.documentmetastore.lid_allocator"); -#include "lid_allocator.h" - using search::fef::TermFieldMatchDataArray; using search::queryeval::Blueprint; using search::queryeval::FieldSpecBaseList; |