diff options
author | Rémi Nicole <nicole@kolabsystems.com> | 2018-07-27 13:40:03 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2018-07-27 13:48:03 +0200 |
commit | c741d7fbb21ff959ca4b6d4f7681aead277044b4 (patch) | |
tree | 5ba510e9d794aea0d689bde08f44fece7fc129e4 /common/resultset.h | |
parent | 0a9b39a1f58c1f5b1a424acbe369db520a12df42 (diff) | |
download | sink-c741d7fbb21ff959ca4b6d4f7681aead277044b4.tar.gz sink-c741d7fbb21ff959ca4b6d4f7681aead277044b4.zip |
Use Key API in ResultSet
Summary:
Depends on D14099
Notes:
- Tests pass without many modifications outside of resultset.cpp/.h
- `mGenerator` doesn't seem to be used?
Benchmarks
=========
Run benchmarks:
| Develop | D14099 | This patch |
| ---------------------------------- | ---------------------------------- | ---------------------------------- |
| Current Rss usage [kb]: 40700 | Current Rss usage [kb]: 38564 | Current Rss usage [kb]: 39112 |
| Peak Rss usage [kb]: 40700 | Peak Rss usage [kb]: 38564 | Peak Rss usage [kb]: 39112 |
| Rss growth [kb]: 15920 | Rss growth [kb]: 13352 | Rss growth [kb]: 13432 |
| Rss growth per entity [byte]: 3260 | Rss growth per entity [byte]: 2734 | Rss growth per entity [byte]: 2750 |
| Rss without db [kb]: 29736 | Rss without db [kb]: 29248 | Rss without db [kb]: 30100 |
| Percentage peak rss error: 0 | Percentage peak rss error: 0 | Percentage peak rss error: 0 |
| On disk [kb]: 10788 | On disk [kb]: 9140 | On disk [kb]: 8836 |
| Buffer size total [kb]: 898 | Buffer size total [kb]: 898 | Buffer size total [kb]: 898 |
| Write amplification: 12.0075 | Write amplification: 10.1732 | Write amplification: 9.83485 |
Test Disk Usage:
| Develop | D14099 | This patch |
| ----------------------------------- | ----------------------------------- | ----------------------------------- |
| Free pages: 412 | Free pages: 309 | Free pages: 312 |
| Total pages: 760 | Total pages: 599 | Total pages: 603 |
| Used size: 1425408 | Used size: 1187840 | Used size: 1191936 |
| Calculated key + value size: 856932 | Calculated key + value size: 702866 | Calculated key + value size: 702866 |
| Calculated total db sizes: 970752 | Calculated total db sizes: 954368 | Calculated total db sizes: 933888 |
| Main store on disk: 3112960 | Main store on disk: 2453504 | Main store on disk: 2469888 |
| Total on disk: 3293184 | Total on disk: 2633728 | Total on disk: 2650112 |
| Used size amplification: 1.66339 | Used size amplification: 1.68999 | Used size amplification: 1.69582 |
| Write amplification: 3.63268 | Write amplification: 3.49071 | Write amplification: 3.51402 |
Reviewers: cmollekopf
Reviewed By: cmollekopf
Tags: #sink
Differential Revision: https://phabricator.kde.org/D14289
Diffstat (limited to 'common/resultset.h')
-rw-r--r-- | common/resultset.h | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/common/resultset.h b/common/resultset.h index 5587c54..9d83c67 100644 --- a/common/resultset.h +++ b/common/resultset.h | |||
@@ -25,6 +25,7 @@ | |||
25 | #include "metadata_generated.h" | 25 | #include "metadata_generated.h" |
26 | #include "entitybuffer.h" | 26 | #include "entitybuffer.h" |
27 | #include "applicationdomaintype.h" | 27 | #include "applicationdomaintype.h" |
28 | #include "storage/key.h" | ||
28 | 29 | ||
29 | /* | 30 | /* |
30 | * An iterator to a result set. | 31 | * An iterator to a result set. |
@@ -35,21 +36,25 @@ class ResultSet | |||
35 | { | 36 | { |
36 | public: | 37 | public: |
37 | struct Result { | 38 | struct Result { |
38 | Result(const Sink::ApplicationDomain::ApplicationDomainType &e, Sink::Operation op, const QMap<QByteArray, QVariant> &v = {}, const QVector<QByteArray> &a = {}) : entity(e), operation(op), aggregateValues(v), aggregateIds(a) {} | 39 | Result(const Sink::ApplicationDomain::ApplicationDomainType &e, Sink::Operation op, |
40 | const QMap<QByteArray, QVariant> &v = {}, const QVector<Sink::Storage::Identifier> &a = {}) | ||
41 | : entity(e), operation(op), aggregateValues(v), aggregateIds(a) | ||
42 | { | ||
43 | } | ||
39 | Sink::ApplicationDomain::ApplicationDomainType entity; | 44 | Sink::ApplicationDomain::ApplicationDomainType entity; |
40 | Sink::Operation operation; | 45 | Sink::Operation operation; |
41 | QMap<QByteArray, QVariant> aggregateValues; | 46 | QMap<QByteArray, QVariant> aggregateValues; |
42 | QVector<QByteArray> aggregateIds; | 47 | QVector<Sink::Storage::Identifier> aggregateIds; |
43 | }; | 48 | }; |
44 | typedef std::function<void(const Result &)> Callback; | 49 | typedef std::function<void(const Result &)> Callback; |
45 | typedef std::function<bool(Callback)> ValueGenerator; | 50 | typedef std::function<bool(Callback)> ValueGenerator; |
46 | typedef std::function<QByteArray()> IdGenerator; | 51 | typedef std::function<Sink::Storage::Identifier()> IdGenerator; |
47 | typedef std::function<void()> SkipValue; | 52 | typedef std::function<void()> SkipValue; |
48 | 53 | ||
49 | ResultSet(); | 54 | ResultSet(); |
50 | ResultSet(const ValueGenerator &generator, const SkipValue &skip); | 55 | ResultSet(const ValueGenerator &generator, const SkipValue &skip); |
51 | ResultSet(const IdGenerator &generator); | 56 | ResultSet(const IdGenerator &generator); |
52 | ResultSet(const QVector<QByteArray> &resultSet); | 57 | ResultSet(const QVector<Sink::Storage::Identifier> &resultSet); |
53 | ResultSet(const ResultSet &other); | 58 | ResultSet(const ResultSet &other); |
54 | 59 | ||
55 | bool next(); | 60 | bool next(); |
@@ -63,14 +68,14 @@ public: | |||
63 | }; | 68 | }; |
64 | ReplayResult replaySet(int offset, int batchSize, const Callback &callback); | 69 | ReplayResult replaySet(int offset, int batchSize, const Callback &callback); |
65 | 70 | ||
66 | QByteArray id(); | 71 | Sink::Storage::Identifier id(); |
67 | 72 | ||
68 | bool isEmpty(); | 73 | bool isEmpty(); |
69 | 74 | ||
70 | private: | 75 | private: |
71 | QVector<QByteArray> mResultSet; | 76 | QVector<Sink::Storage::Identifier> mResultSet; |
72 | QVector<QByteArray>::ConstIterator mIt; | 77 | QVector<Sink::Storage::Identifier>::ConstIterator mIt; |
73 | QByteArray mCurrentValue; | 78 | Sink::Storage::Identifier mCurrentValue; |
74 | IdGenerator mGenerator; | 79 | IdGenerator mGenerator; |
75 | ValueGenerator mValueGenerator; | 80 | ValueGenerator mValueGenerator; |
76 | SkipValue mSkip; | 81 | SkipValue mSkip; |