summaryrefslogtreecommitdiffstats
path: root/vespalib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-03-02 02:00:41 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2017-03-08 21:38:37 +0000
commitbe9df8bfa22cf5a7164f4f3deba44cdbd2b8e7cf (patch)
treef4a9153a9613f375f3a7dc15fb274a528a1269ed /vespalib
parent72e9888bcccbc384d2485409ba055633131ed512 (diff)
Implement a default destructor to avoid the automatic inlining of large destructors.
Diffstat (limited to 'vespalib')
-rw-r--r--vespalib/src/tests/delegatelist/delegatelist.cpp12
-rw-r--r--vespalib/src/tests/dotproduct/dotproductbenchmark.cpp101
-rw-r--r--vespalib/src/tests/dual_merge_director/dual_merge_director_test.cpp24
-rw-r--r--vespalib/src/tests/left_right_heap/left_right_heap_bench.cpp40
-rw-r--r--vespalib/src/vespa/vespalib/component/versionspecification.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/component/versionspecification.h1
-rw-r--r--vespalib/src/vespa/vespalib/data/writable_memory.h2
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 {
/**