summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-05-22 14:38:46 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2023-05-22 14:38:46 +0000
commit1c5d8ba183621e3f101b8f16eae7fcfb4c22f808 (patch)
tree055e3d576cdc0fc423973da69e39dd0ec8c69a63
parent38601194dc7ece53e180005f10f26c3858956ce6 (diff)
Use a smallvector to avoid indirection in most common case, and reserve some space upfront
-rw-r--r--searchcore/src/tests/proton/matching/querynodes_test.cpp4
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/blueprintbuilder.cpp3
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/querynodes.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp1
-rw-r--r--searchlib/src/vespa/searchlib/fef/itermdata.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/itermfielddata.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/blueprint.h1
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/field_spec.h2
8 files changed, 10 insertions, 7 deletions
diff --git a/searchcore/src/tests/proton/matching/querynodes_test.cpp b/searchcore/src/tests/proton/matching/querynodes_test.cpp
index 15fcc8a3fd7..3c9220bcdb8 100644
--- a/searchcore/src/tests/proton/matching/querynodes_test.cpp
+++ b/searchcore/src/tests/proton/matching/querynodes_test.cpp
@@ -520,9 +520,9 @@ TEST("requireThatSimpleIntermediatesGetProperBlending") {
TEST("control query nodes size") {
EXPECT_EQUAL(160u, sizeof(search::query::NumberTerm));
- EXPECT_EQUAL(192u, sizeof(ProtonNodeTypes::NumberTerm));
+ EXPECT_EQUAL(280u, sizeof(ProtonNodeTypes::NumberTerm));
EXPECT_EQUAL(160u, sizeof(search::query::StringTerm));
- EXPECT_EQUAL(192u, sizeof(ProtonNodeTypes::StringTerm));
+ EXPECT_EQUAL(280u, sizeof(ProtonNodeTypes::StringTerm));
}
} // namespace
diff --git a/searchcore/src/vespa/searchcore/proton/matching/blueprintbuilder.cpp b/searchcore/src/vespa/searchcore/proton/matching/blueprintbuilder.cpp
index 03e15830ac5..68845cf7f7f 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/blueprintbuilder.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/blueprintbuilder.cpp
@@ -23,7 +23,7 @@ struct Mixer {
Mixer() : attributes() {}
void addAttribute(Blueprint::UP attr) {
- if (attributes.get() == 0) {
+ if ( ! attributes) {
attributes = std::make_unique<OrBlueprint>();
}
attributes->addChild(std::move(attr));
@@ -62,6 +62,7 @@ private:
void buildChildren(IntermediateBlueprint &parent,
const std::vector<search::query::Node *> &children)
{
+ parent.reserve(children.size());
for (size_t i = 0; i < children.size(); ++i) {
parent.addChild(BlueprintBuilder::build(_requestContext, *children[i], _context));
}
diff --git a/searchcore/src/vespa/searchcore/proton/matching/querynodes.h b/searchcore/src/vespa/searchcore/proton/matching/querynodes.h
index 03b274b7233..0e01884d504 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/querynodes.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/querynodes.h
@@ -44,7 +44,7 @@ public:
};
private:
- std::vector<FieldEntry> _fields;
+ vespalib::SmallVector<FieldEntry, 1u> _fields;
void propagate_document_frequency(uint32_t matching_count_doc, uint32_t total_doc_count);
diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp b/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp
index 9d1ec1b37a8..7a622030d98 100644
--- a/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp
@@ -860,6 +860,7 @@ void
CreateBlueprintVisitor::createShallowWeightedSet(WS *bp, MultiTerm &n, const FieldSpec &fs, bool isInteger) {
Blueprint::UP result(bp);
SearchContextParams scParams = createContextParams();
+ bp->reserve(n.getNumTerms());
for (uint32_t i(0); i < n.getNumTerms(); i++) {
FieldSpec childfs = bp->getNextChildField(fs);
auto term = n.getAsString(i);
diff --git a/searchlib/src/vespa/searchlib/fef/itermdata.h b/searchlib/src/vespa/searchlib/fef/itermdata.h
index 306c91f7ab2..9a063cf93ee 100644
--- a/searchlib/src/vespa/searchlib/fef/itermdata.h
+++ b/searchlib/src/vespa/searchlib/fef/itermdata.h
@@ -16,7 +16,7 @@ namespace search::fef {
class ITermData
{
protected:
- virtual ~ITermData() {}
+ virtual ~ITermData() = default;
public:
/**
diff --git a/searchlib/src/vespa/searchlib/fef/itermfielddata.h b/searchlib/src/vespa/searchlib/fef/itermfielddata.h
index 057a5794fa9..88fa8c5f781 100644
--- a/searchlib/src/vespa/searchlib/fef/itermfielddata.h
+++ b/searchlib/src/vespa/searchlib/fef/itermfielddata.h
@@ -76,7 +76,7 @@ public:
**/
virtual TermFieldHandle getHandle(MatchDataDetails requested_details) const = 0;
protected:
- virtual ~ITermFieldData() {}
+ virtual ~ITermFieldData() = default;
private:
uint32_t _fieldId;
uint32_t _matching_doc_count;
diff --git a/searchlib/src/vespa/searchlib/queryeval/blueprint.h b/searchlib/src/vespa/searchlib/queryeval/blueprint.h
index 1ea02e41a62..dc7a0992d82 100644
--- a/searchlib/src/vespa/searchlib/queryeval/blueprint.h
+++ b/searchlib/src/vespa/searchlib/queryeval/blueprint.h
@@ -331,6 +331,7 @@ public:
size_t childCnt() const { return _children.size(); }
const Blueprint &getChild(size_t n) const { return *_children[n]; }
Blueprint &getChild(size_t n) { return *_children[n]; }
+ void reserve(size_t sz) { _children.reserve(sz); }
IntermediateBlueprint & insertChild(size_t n, Blueprint::UP child);
IntermediateBlueprint &addChild(Blueprint::UP child);
Blueprint::UP removeChild(size_t n);
diff --git a/searchlib/src/vespa/searchlib/queryeval/field_spec.h b/searchlib/src/vespa/searchlib/queryeval/field_spec.h
index a1050209b41..fd925fdf4ff 100644
--- a/searchlib/src/vespa/searchlib/queryeval/field_spec.h
+++ b/searchlib/src/vespa/searchlib/queryeval/field_spec.h
@@ -86,7 +86,7 @@ public:
class FieldSpecList
{
private:
- std::vector<FieldSpec> _list;
+ vespalib::SmallVector<FieldSpec, 1> _list;
public:
FieldSpecList() = default;