diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-03-02 02:00:41 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2017-03-08 21:38:37 +0000 |
commit | be9df8bfa22cf5a7164f4f3deba44cdbd2b8e7cf (patch) | |
tree | f4a9153a9613f375f3a7dc15fb274a528a1269ed /vespalib/src | |
parent | 72e9888bcccbc384d2485409ba055633131ed512 (diff) |
Implement a default destructor to avoid the automatic inlining of large destructors.
Diffstat (limited to 'vespalib/src')
7 files changed, 110 insertions, 72 deletions
diff --git a/vespalib/src/tests/delegatelist/delegatelist.cpp b/vespalib/src/tests/delegatelist/delegatelist.cpp index 2efb08e22df..475d4e24551 100644 --- a/vespalib/src/tests/delegatelist/delegatelist.cpp +++ b/vespalib/src/tests/delegatelist/delegatelist.cpp @@ -213,17 +213,21 @@ private: void doneOp(const Command &cmd); int perform(int cnt, int start, const CmdList &cmdList); public: - Actor(int id, History *hist) - : _id(id), _hist(hist), _queue(), _cond(), _state(STATE_INIT), - _waitCnt(0), _opCnt(0), _exit(false) {} + Actor(int id, History *hist); + ~Actor(); int getOpCnt() const { return _opCnt; } int getState() const { return _state; } void doIt(const CmdList &cmdList); void doIt(const Command &cmd); void waitState(int state); - void Run(FastOS_ThreadInterface *, void *); + void Run(FastOS_ThreadInterface *, void *) override; }; +Actor::Actor(int id, History *hist) + : _id(id), _hist(hist), _queue(), _cond(), _state(STATE_INIT), + _waitCnt(0), _opCnt(0), _exit(false) +{} +Actor::~Actor() {} void Actor::setState(int state, MonitorGuard &guard) { diff --git a/vespalib/src/tests/dotproduct/dotproductbenchmark.cpp b/vespalib/src/tests/dotproduct/dotproductbenchmark.cpp index 9ef3d959f3b..b04aa802098 100644 --- a/vespalib/src/tests/dotproduct/dotproductbenchmark.cpp +++ b/vespalib/src/tests/dotproduct/dotproductbenchmark.cpp @@ -28,20 +28,8 @@ template <typename T> class FullBenchmark : public Benchmark { public: - FullBenchmark(size_t numDocs, size_t numValues) : - _values(numDocs*numValues), - _query(numValues), - _dp(IAccelrated::getAccelrator()) - { - for (size_t i(0); i < numDocs; i++) { - for (size_t j(0); j < numValues; j++) { - _values[i*numValues + j] = j; - } - } - for (size_t j(0); j < numValues; j++) { - _query[j] = j; - } - } + FullBenchmark(size_t numDocs, size_t numValue); + ~FullBenchmark(); virtual void compute(size_t docId) const { _dp->dotProduct(&_query[0], &_values[docId * _query.size()], _query.size()); } @@ -51,20 +39,30 @@ private: IAccelrated::UP _dp; }; -class SparseBenchmark : public Benchmark +template <typename T> +FullBenchmark<T>::FullBenchmark(size_t numDocs, size_t numValues) + : _values(numDocs*numValues), + _query(numValues), + _dp(IAccelrated::getAccelrator()) { -public: - SparseBenchmark(size_t numDocs, size_t numValues, size_t numQueryValues) : - _numValues(numValues), - _values(numDocs*numValues) - { - for (size_t i(0); i < numDocs; i++) { - for (size_t j(0); j < numValues; j++) { - size_t k(numValues < numQueryValues ? (j*numQueryValues)/numValues : j); - _values[i*numValues + j] = P(k, k); - } + for (size_t i(0); i < numDocs; i++) { + for (size_t j(0); j < numValues; j++) { + _values[i*numValues + j] = j; } } + for (size_t j(0); j < numValues; j++) { + _query[j] = j; + } +} + +template <typename T> +FullBenchmark<T>::~FullBenchmark() { } + +class SparseBenchmark : public Benchmark +{ +public: + SparseBenchmark(size_t numDocs, size_t numValues, size_t numQueryValues); + ~SparseBenchmark(); protected: struct P { P(uint32_t key=0, int32_t value=0) : @@ -78,18 +76,26 @@ protected: std::vector<P> _values; }; +SparseBenchmark::SparseBenchmark(size_t numDocs, size_t numValues, size_t numQueryValues) + : _numValues(numValues), + _values(numDocs*numValues) +{ + for (size_t i(0); i < numDocs; i++) { + for (size_t j(0); j < numValues; j++) { + size_t k(numValues < numQueryValues ? (j*numQueryValues)/numValues : j); + _values[i*numValues + j] = P(k, k); + } + } +} +SparseBenchmark::~SparseBenchmark() { } + class UnorderedSparseBenchmark : public SparseBenchmark { private: typedef hash_map<uint32_t, int32_t> map; public: - UnorderedSparseBenchmark(size_t numDocs, size_t numValues, size_t numQueryValues) : - SparseBenchmark(numDocs, numValues, numQueryValues) - { - for (size_t j(0); j < numQueryValues; j++) { - _query[j] = j; - } - } + UnorderedSparseBenchmark(size_t numDocs, size_t numValues, size_t numQueryValues); + ~UnorderedSparseBenchmark(); private: virtual void compute(size_t docId) const { int64_t sum(0); @@ -105,19 +111,21 @@ private: map _query; }; +UnorderedSparseBenchmark::UnorderedSparseBenchmark(size_t numDocs, size_t numValues, size_t numQueryValues) + : SparseBenchmark(numDocs, numValues, numQueryValues) +{ + for (size_t j(0); j < numQueryValues; j++) { + _query[j] = j; + } +} +UnorderedSparseBenchmark::~UnorderedSparseBenchmark() {} + class OrderedSparseBenchmark : public SparseBenchmark { private: public: - OrderedSparseBenchmark(size_t numDocs, size_t numValues, size_t numQueryValues) : - SparseBenchmark(numDocs, numValues, numQueryValues), - _query(numQueryValues) - { - for (size_t j(0); j < numQueryValues; j++) { - size_t k(numValues > numQueryValues ? j*numValues/numQueryValues : j); - _query[j] = P(k, k); - } - } + OrderedSparseBenchmark(size_t numDocs, size_t numValues, size_t numQueryValues); + ~OrderedSparseBenchmark(); private: virtual void compute(size_t docId) const { int64_t sum(0); @@ -133,6 +141,17 @@ private: std::vector<P> _query; }; +OrderedSparseBenchmark::OrderedSparseBenchmark(size_t numDocs, size_t numValues, size_t numQueryValues) + : SparseBenchmark(numDocs, numValues, numQueryValues), + _query(numQueryValues) +{ + for (size_t j(0); j < numQueryValues; j++) { + size_t k(numValues > numQueryValues ? j*numValues/numQueryValues : j); + _query[j] = P(k, k); + } +} +OrderedSparseBenchmark::~OrderedSparseBenchmark() { } + int main(int argc, char *argv[]) { size_t numDocs(1); diff --git a/vespalib/src/tests/dual_merge_director/dual_merge_director_test.cpp b/vespalib/src/tests/dual_merge_director/dual_merge_director_test.cpp index 72fd17e76d5..b6621a75b84 100644 --- a/vespalib/src/tests/dual_merge_director/dual_merge_director_test.cpp +++ b/vespalib/src/tests/dual_merge_director/dual_merge_director_test.cpp @@ -10,16 +10,8 @@ struct MySource : public DualMergeDirector::Source { std::string data; std::string diff; - MySource(bool a, size_t num_sources, size_t source_id) - : typeA(a), - data(num_sources, '0'), - diff(num_sources, '5') - { - if (source_id < num_sources) { - data[source_id] = '1'; - diff[source_id] = '6'; - } - } + MySource(bool a, size_t num_sources, size_t source_id); + ~MySource(); virtual void merge(Source &mt) { MySource &rhs = static_cast<MySource&>(mt); ASSERT_EQUAL(typeA, rhs.typeA); @@ -40,6 +32,18 @@ struct MySource : public DualMergeDirector::Source { } }; +MySource::MySource(bool a, size_t num_sources, size_t source_id) + : typeA(a), + data(num_sources, '0'), + diff(num_sources, '5') +{ + if (source_id < num_sources) { + data[source_id] = '1'; + diff[source_id] = '6'; + } +} +MySource::~MySource() {} + TEST_MT_F("require that merging works", 64, std::unique_ptr<DualMergeDirector>()) { for (size_t use_threads = 1; use_threads <= num_threads; ++use_threads) { MySource sourceA(true, use_threads, thread_id); diff --git a/vespalib/src/tests/left_right_heap/left_right_heap_bench.cpp b/vespalib/src/tests/left_right_heap/left_right_heap_bench.cpp index 114786bf2eb..5699adfb760 100644 --- a/vespalib/src/tests/left_right_heap/left_right_heap_bench.cpp +++ b/vespalib/src/tests/left_right_heap/left_right_heap_bench.cpp @@ -74,26 +74,32 @@ struct Data32p { size_t size; std::vector<uint32_t> values; std::vector<uint16_t> data; - Data32p(size_t s) : cmp(0), size(s), values(), data() {} + Data32p(size_t s); + ~Data32p(); static const char *name() { return "uint32_t[uint16_t]"; } - void init(bool inv) { - values.resize(size); - data.resize(size); - srandom(42); - for (size_t i = 0; i < size; ++i) { - if (inv) { - values[size - i - 1] = random(); - data[size - i - 1] = (size - i - 1); - } else { - values[i] = random(); - data[i] = i; - } + void init(bool inv); +}; + +Data32p::Data32p(size_t s) : cmp(0), size(s), values(), data() {} +Data32p::~Data32p() {} +void +Data32p::init(bool inv) { + values.resize(size); + data.resize(size); + srandom(42); + for (size_t i = 0; i < size; ++i) { + if (inv) { + values[size - i - 1] = random(); + data[size - i - 1] = (size - i - 1); + } else { + values[i] = random(); + data[i] = i; } - ASSERT_EQUAL(size, values.size()); - ASSERT_EQUAL(size, data.size()); - cmp = MyCmp(&values[0]); } -}; + ASSERT_EQUAL(size, values.size()); + ASSERT_EQUAL(size, data.size()); + cmp = MyCmp(&values[0]); +} template <typename T, typename C> bool verifyOrder(T *begin, T *end, const C &cmp, bool inv) { diff --git a/vespalib/src/vespa/vespalib/component/versionspecification.cpp b/vespalib/src/vespa/vespalib/component/versionspecification.cpp index e54550a7fc8..71137835187 100644 --- a/vespalib/src/vespa/vespalib/component/versionspecification.cpp +++ b/vespalib/src/vespa/vespalib/component/versionspecification.cpp @@ -20,6 +20,8 @@ VersionSpecification::VersionSpecification(int major, int minor, int micro, cons initialize(); } +VersionSpecification::VersionSpecification(const VersionSpecification &) = default; + VersionSpecification::~VersionSpecification() { } void diff --git a/vespalib/src/vespa/vespalib/component/versionspecification.h b/vespalib/src/vespa/vespalib/component/versionspecification.h index 547b140c701..a0052b46b4f 100644 --- a/vespalib/src/vespa/vespalib/component/versionspecification.h +++ b/vespalib/src/vespa/vespalib/component/versionspecification.h @@ -67,6 +67,7 @@ public: VersionSpecification(int major = UNSPECIFIED, int minor = UNSPECIFIED, int micro = UNSPECIFIED, const string & qualifier = ""); + VersionSpecification(const VersionSpecification &); ~VersionSpecification(); /** diff --git a/vespalib/src/vespa/vespalib/data/writable_memory.h b/vespalib/src/vespa/vespalib/data/writable_memory.h index fdcc8e07803..73bbff9dec7 100644 --- a/vespalib/src/vespa/vespalib/data/writable_memory.h +++ b/vespalib/src/vespa/vespalib/data/writable_memory.h @@ -2,6 +2,8 @@ #pragma once +#include <cstddef> + namespace vespalib { /** |