diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-08-24 23:10:41 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-24 23:10:41 +0200 |
commit | fb615e711a3771d9fad2935661e3be8ae5a8c6bf (patch) | |
tree | 787197f5d401ad283fb1cdb3d6a395e11f6c4291 /searchlib | |
parent | 732e00a7c5b938219b6f6387ba45a979ec200210 (diff) | |
parent | f55366b12358d1f643afa189e8fcc6df178784fe (diff) |
Merge pull request #3184 from vespa-engine/balder/move-instead-of-copy
Balder/move instead of copy
Diffstat (limited to 'searchlib')
-rw-r--r-- | searchlib/src/vespa/searchlib/aggregation/group.cpp | 10 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/aggregation/group.h | 6 |
2 files changed, 8 insertions, 8 deletions
diff --git a/searchlib/src/vespa/searchlib/aggregation/group.cpp b/searchlib/src/vespa/searchlib/aggregation/group.cpp index 6eb131fe77d..4172de3c086 100644 --- a/searchlib/src/vespa/searchlib/aggregation/group.cpp +++ b/searchlib/src/vespa/searchlib/aggregation/group.cpp @@ -206,10 +206,10 @@ Group & Group::operator = (const Group & rhs) = default; Group::~Group() { } Group & -Group::partialCopy(const Group & rhs) { +Group::partialMove(Group &rhs) { setId(*rhs._id); _rank = rhs._rank; - _aggr.partialCopy(rhs._aggr); + _aggr.partialMove(rhs._aggr); return *this; } @@ -373,7 +373,7 @@ void Group::Value::mergeLevel(const Group & protoType, const Value & b) { for (ChildP *it(b._children), *mt(b._children + b.getChildrenSize()); it != mt; ++it) { ChildP g(new Group(protoType)); - g->partialCopy(**it); + g->partialMove(**it); addChild(g); } } @@ -735,10 +735,10 @@ Group::Value::swap(Value & rhs) void -Group::Value::partialCopy(const Value & rhs) { +Group::Value::partialMove(Value &rhs) { uint32_t totalAggrSize = getAggrSize() + getExprSize(); for(size_t i(0), m(totalAggrSize); i < m; i++) { - _aggregationResults[i] = rhs._aggregationResults[i]; + _aggregationResults[i] = std::move(rhs._aggregationResults[i]); } for(size_t i(0), m(getAggrSize()); i < m; i++) { getAggr(i)->reset(); diff --git a/searchlib/src/vespa/searchlib/aggregation/group.h b/searchlib/src/vespa/searchlib/aggregation/group.h index b34bd0fc88a..32b9696e7f8 100644 --- a/searchlib/src/vespa/searchlib/aggregation/group.h +++ b/searchlib/src/vespa/searchlib/aggregation/group.h @@ -64,7 +64,7 @@ public: size_t operator() (const ResultNode & arg) const { return arg.hash(); } }; - typedef std::vector<GroupingLevel> GroupingLevelList; + using GroupingLevelList = std::vector<GroupingLevel>; private: @@ -102,7 +102,7 @@ private: void merge(const GroupingLevelList & levels, uint32_t firstLevel, uint32_t currentLevel, const Value & rhs); void prune(const Value & b, uint32_t lastLevel, uint32_t currentLevel); void postMerge(const std::vector<GroupingLevel> &levels, uint32_t firstLevel, uint32_t currentLevel); - void partialCopy(const Value & rhs); + void partialMove(Value &rhs); VESPA_DLL_LOCAL Group * groupSingle(const ResultNode & selectResult, HitRank rank, const GroupingLevel & level); GroupList groups() const { return _children; } @@ -167,7 +167,7 @@ private: RawRank _rank; // The default rank taken from the highest hit relevance. Value _aggr; - Group & partialCopy(const Group & rhs); + Group & partialMove(Group &rhs); template <typename Doc> VESPA_DLL_LOCAL void groupNext(const GroupingLevel & level, const Doc & docId, HitRank rank); |