diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2016-09-21 19:52:59 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2016-09-21 19:52:59 +0000 |
commit | 20961181a6daa47175c9df8bb223865421d2bfda (patch) | |
tree | 1549ef443713cc7c3fd709b765daa07d1b18fb98 /storage | |
parent | 9b1e7423918a12812fd58d8096443d6cab811016 (diff) |
Replace the barely used SmallVector optimizations with std::vector and explicit reserve.
Diffstat (limited to 'storage')
3 files changed, 17 insertions, 19 deletions
diff --git a/storage/src/vespa/storage/distributor/operations/idealstate/mergelimiter.cpp b/storage/src/vespa/storage/distributor/operations/idealstate/mergelimiter.cpp index 18a2f8c8118..618ba9ba884 100644 --- a/storage/src/vespa/storage/distributor/operations/idealstate/mergelimiter.cpp +++ b/storage/src/vespa/storage/distributor/operations/idealstate/mergelimiter.cpp @@ -1,7 +1,6 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include <vespa/storage/distributor/operations/idealstate/mergelimiter.h> -#include <vespa/vdslib/container/smallvector.h> #include <vespa/log/log.h> @@ -19,7 +18,7 @@ MergeLimiter::MergeLimiter(uint16_t maxNodes) namespace { class EqualCopies { uint32_t _checksum; - lib::SmallVector<MergeMetaData> _copies; + std::vector<MergeMetaData> _copies; uint32_t _trustedCopies; public: @@ -47,14 +46,8 @@ namespace { } }; - vespalib::asciistream& operator<<(vespalib::asciistream& out, - const EqualCopies& e) - { - return out << "EqualCopies(" << e.size() << ")"; - } - class Statistics { - lib::SmallVector<EqualCopies> _groups; + std::vector<EqualCopies> _groups; uint32_t _trustedCopies; public: @@ -62,6 +55,7 @@ namespace { Statistics(const MergeLimiter::NodeArray& a) : _trustedCopies(0) { + _groups.reserve(a.size()); for (uint32_t i=0, n=a.size(); i<n; ++i) { add(a[i]); if (a[i].trusted()) { @@ -87,18 +81,20 @@ namespace { uint32_t trustedCount() const { return _trustedCopies; } Statistics extractGroupsWithTrustedCopies() { - lib::SmallVector<EqualCopies> _remaining; + std::vector<EqualCopies> remaining; Statistics trusted; + remaining.reserve(_groups.size()); + trusted._groups.reserve(_groups.size()); for (uint32_t i=0, n=_groups.size(); i<n; ++i) { if (_groups[i].hasTrusted()) { trusted._groups.push_back(_groups[i]); trusted._trustedCopies += _groups[i].trustedCount(); } else { - _remaining.push_back(_groups[i]); + remaining.push_back(_groups[i]); _trustedCopies -= _groups[i].trustedCount(); } } - swap(_remaining, _groups); + swap(remaining, _groups); return trusted; } bool extractNext(MergeMetaData& data, uint32_t& last) { @@ -112,9 +108,12 @@ namespace { return true; } void removeGroup(uint32_t groupIndex) { - lib::SmallVector<EqualCopies> remaining; + std::vector<EqualCopies> remaining; + remaining.reserve(_groups.size()-1); for (uint32_t i=0, n=_groups.size(); i<n; ++i) { - if (i != groupIndex) remaining.push_back(_groups[i]); + if (i != groupIndex) { + remaining.push_back(_groups[i]); + } } remaining.swap(_groups); } diff --git a/storage/src/vespa/storage/distributor/operationtargetresolver.h b/storage/src/vespa/storage/distributor/operationtargetresolver.h index 87757ec3227..380ce3ae1e6 100644 --- a/storage/src/vespa/storage/distributor/operationtargetresolver.h +++ b/storage/src/vespa/storage/distributor/operationtargetresolver.h @@ -7,7 +7,6 @@ #pragma once #include <vespa/document/bucket/bucketid.h> -#include <vespa/vdslib/container/smallvector.h> #include <vespa/vdslib/state/node.h> #include <vespa/vespalib/util/printable.h> @@ -42,7 +41,7 @@ public: } }; -class OperationTargetList : public lib::SmallVector<OperationTarget> { +class OperationTargetList : public std::vector<OperationTarget> { public: bool hasAnyNewCopies() const { for (size_t i=0; i<size(); ++i) { diff --git a/storage/src/vespa/storage/distributor/operationtargetresolverimpl.h b/storage/src/vespa/storage/distributor/operationtargetresolverimpl.h index 08d79c501e4..36cb02dc213 100644 --- a/storage/src/vespa/storage/distributor/operationtargetresolverimpl.h +++ b/storage/src/vespa/storage/distributor/operationtargetresolverimpl.h @@ -27,7 +27,7 @@ struct BucketInstance : public vespalib::AsciiPrintable { }; class BucketInstanceList : public vespalib::AsciiPrintable { - lib::SmallVector<BucketInstance> _instances; + std::vector<BucketInstance> _instances; /** * Resolve and return the least specific bucket in the subtree of (and @@ -73,8 +73,8 @@ public: OperationTargetList createTargets(); - void print(vespalib::asciistream& out, const PrintProperties& p) const { - _instances.print(out, p); + void print(vespalib::asciistream& out, const PrintProperties& p) const override { + vespalib::print(_instances, out, p); } }; |