From 1c5d8ba183621e3f101b8f16eae7fcfb4c22f808 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Mon, 22 May 2023 14:38:46 +0000 Subject: Use a smallvector to avoid indirection in most common case, and reserve some space upfront --- searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp | 1 + searchlib/src/vespa/searchlib/fef/itermdata.h | 2 +- searchlib/src/vespa/searchlib/fef/itermfielddata.h | 2 +- searchlib/src/vespa/searchlib/queryeval/blueprint.h | 1 + searchlib/src/vespa/searchlib/queryeval/field_spec.h | 2 +- 5 files changed, 5 insertions(+), 3 deletions(-) (limited to 'searchlib') 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 _list; + vespalib::SmallVector _list; public: FieldSpecList() = default; -- cgit v1.2.3