diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-10-13 18:38:35 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2018-02-11 23:03:17 +0100 |
commit | 6051c1247cde61bcc8e483eb4166e5a297c0ecc6 (patch) | |
tree | df3aba1ef4011f2640b17c8cf7a9b106933231ab /tests/dummyresourcewritebenchmark.cpp | |
parent | 8740a007515dcf1b315d69ab5c64fcfd40ec980c (diff) | |
download | sink-6051c1247cde61bcc8e483eb4166e5a297c0ecc6.tar.gz sink-6051c1247cde61bcc8e483eb4166e5a297c0ecc6.zip |
Xapian based fulltext indexing
This cuts into the sync performance by about 40%,
but gives us fast fulltext searching for all local content.
Diffstat (limited to 'tests/dummyresourcewritebenchmark.cpp')
-rw-r--r-- | tests/dummyresourcewritebenchmark.cpp | 42 |
1 files changed, 19 insertions, 23 deletions
diff --git a/tests/dummyresourcewritebenchmark.cpp b/tests/dummyresourcewritebenchmark.cpp index 07f57f6..e0ec503 100644 --- a/tests/dummyresourcewritebenchmark.cpp +++ b/tests/dummyresourcewritebenchmark.cpp | |||
@@ -20,6 +20,7 @@ | |||
20 | #include "hawd/formatter.h" | 20 | #include "hawd/formatter.h" |
21 | 21 | ||
22 | #include "event_generated.h" | 22 | #include "event_generated.h" |
23 | #include "mail_generated.h" | ||
23 | #include "entity_generated.h" | 24 | #include "entity_generated.h" |
24 | #include "metadata_generated.h" | 25 | #include "metadata_generated.h" |
25 | #include "createentity_generated.h" | 26 | #include "createentity_generated.h" |
@@ -27,38 +28,36 @@ | |||
27 | #include "getrssusage.h" | 28 | #include "getrssusage.h" |
28 | #include "utils.h" | 29 | #include "utils.h" |
29 | 30 | ||
31 | #include <KMime/Message> | ||
32 | |||
30 | static QByteArray createEntityBuffer(size_t attachmentSize, int &bufferSize) | 33 | static QByteArray createEntityBuffer(size_t attachmentSize, int &bufferSize) |
31 | { | 34 | { |
32 | uint8_t rawData[attachmentSize]; | ||
33 | flatbuffers::FlatBufferBuilder eventFbb; | 35 | flatbuffers::FlatBufferBuilder eventFbb; |
34 | eventFbb.Clear(); | 36 | eventFbb.Clear(); |
35 | { | 37 | { |
36 | uint8_t *rawDataPtr = Q_NULLPTR; | ||
37 | auto data = eventFbb.CreateUninitializedVector<uint8_t>(attachmentSize, &rawDataPtr); | ||
38 | auto summary = eventFbb.CreateString("summary"); | ||
39 | Sink::ApplicationDomain::Buffer::EventBuilder eventBuilder(eventFbb); | ||
40 | eventBuilder.add_summary(summary); | ||
41 | eventBuilder.add_attachment(data); | ||
42 | auto eventLocation = eventBuilder.Finish(); | ||
43 | Sink::ApplicationDomain::Buffer::FinishEventBuffer(eventFbb, eventLocation); | ||
44 | memcpy((void *)rawDataPtr, rawData, attachmentSize); | ||
45 | } | ||
46 | 38 | ||
47 | flatbuffers::FlatBufferBuilder localFbb; | 39 | auto msg = KMime::Message::Ptr::create(); |
48 | { | 40 | msg->subject()->from7BitString("Some subject"); |
49 | auto uid = localFbb.CreateString("testuid"); | 41 | msg->setBody("This is the body now."); |
50 | auto localBuilder = Sink::ApplicationDomain::Buffer::EventBuilder(localFbb); | 42 | msg->assemble(); |
51 | localBuilder.add_uid(uid); | 43 | |
52 | auto location = localBuilder.Finish(); | 44 | const auto data = msg->encodedContent(); |
53 | Sink::ApplicationDomain::Buffer::FinishEventBuffer(localFbb, location); | 45 | |
46 | auto summary = eventFbb.CreateString("summary"); | ||
47 | auto mimeMessage = eventFbb.CreateString(data.constData(), data.length()); | ||
48 | Sink::ApplicationDomain::Buffer::MailBuilder eventBuilder(eventFbb); | ||
49 | eventBuilder.add_subject(summary); | ||
50 | eventBuilder.add_messageId(summary); | ||
51 | eventBuilder.add_mimeMessage(mimeMessage); | ||
52 | Sink::ApplicationDomain::Buffer::FinishMailBuffer(eventFbb, eventBuilder.Finish()); | ||
54 | } | 53 | } |
55 | 54 | ||
56 | flatbuffers::FlatBufferBuilder entityFbb; | 55 | flatbuffers::FlatBufferBuilder entityFbb; |
57 | Sink::EntityBuffer::assembleEntityBuffer(entityFbb, 0, 0, eventFbb.GetBufferPointer(), eventFbb.GetSize(), localFbb.GetBufferPointer(), localFbb.GetSize()); | 56 | Sink::EntityBuffer::assembleEntityBuffer(entityFbb, 0, 0, 0, 0, eventFbb.GetBufferPointer(), eventFbb.GetSize()); |
58 | bufferSize = entityFbb.GetSize(); | 57 | bufferSize = entityFbb.GetSize(); |
59 | 58 | ||
60 | flatbuffers::FlatBufferBuilder fbb; | 59 | flatbuffers::FlatBufferBuilder fbb; |
61 | auto type = fbb.CreateString(Sink::ApplicationDomain::getTypeName<Sink::ApplicationDomain::Event>().toStdString().data()); | 60 | auto type = fbb.CreateString(Sink::ApplicationDomain::getTypeName<Sink::ApplicationDomain::Mail>().toStdString().data()); |
62 | auto delta = fbb.CreateVector<uint8_t>(entityFbb.GetBufferPointer(), entityFbb.GetSize()); | 61 | auto delta = fbb.CreateVector<uint8_t>(entityFbb.GetBufferPointer(), entityFbb.GetSize()); |
63 | Sink::Commands::CreateEntityBuilder builder(fbb); | 62 | Sink::Commands::CreateEntityBuilder builder(fbb); |
64 | builder.add_domainType(type); | 63 | builder.add_domainType(type); |
@@ -263,10 +262,7 @@ private slots: | |||
263 | 262 | ||
264 | void runBenchmarks() | 263 | void runBenchmarks() |
265 | { | 264 | { |
266 | writeInProcess(1000, mTimeStamp); | ||
267 | writeInProcess(2000, mTimeStamp); | ||
268 | writeInProcess(5000, mTimeStamp); | 265 | writeInProcess(5000, mTimeStamp); |
269 | writeInProcess(20000, mTimeStamp); | ||
270 | } | 266 | } |
271 | 267 | ||
272 | void ensureUsedMemoryRemainsStable() | 268 | void ensureUsedMemoryRemainsStable() |