summaryrefslogtreecommitdiffstats
path: root/tests/dummyresourcewritebenchmark.cpp
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2016-10-13 18:38:35 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2018-02-11 23:03:17 +0100
commit6051c1247cde61bcc8e483eb4166e5a297c0ecc6 (patch)
treedf3aba1ef4011f2640b17c8cf7a9b106933231ab /tests/dummyresourcewritebenchmark.cpp
parent8740a007515dcf1b315d69ab5c64fcfd40ec980c (diff)
downloadsink-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.cpp42
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
30static QByteArray createEntityBuffer(size_t attachmentSize, int &bufferSize) 33static 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()