summaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-01-19 18:53:55 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2017-01-19 18:53:55 +0100
commit06f476a7aa0a75948cc90c680f924aab0813adc4 (patch)
treea7261b0691daaf57f9745ccb7b9d04d636652c6f /searchcore
parentd5c2b05cc9de42874417369429c80113ba66c197 (diff)
Ensure that we allocate memory once.
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.cpp6
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/lid_allocator.cpp5
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;