summaryrefslogtreecommitdiffstats
path: root/examples/maildirresource/maildirresource.cpp
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2016-02-11 16:32:50 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2016-02-11 16:32:50 +0100
commit88d97300ed6d604f5cbe426bb8c5e2fd52762518 (patch)
tree1d8889ac8e2cc21bed5149d66a3e1a5121cf6503 /examples/maildirresource/maildirresource.cpp
parentda89ac85482997cabd48a2c996c619529f256283 (diff)
downloadsink-88d97300ed6d604f5cbe426bb8c5e2fd52762518.tar.gz
sink-88d97300ed6d604f5cbe426bb8c5e2fd52762518.zip
Use a single transaction to append all messages generated during a sync.
This get's a sync of 4890 mails from 55s to less than 10s.
Diffstat (limited to 'examples/maildirresource/maildirresource.cpp')
-rw-r--r--examples/maildirresource/maildirresource.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/examples/maildirresource/maildirresource.cpp b/examples/maildirresource/maildirresource.cpp
index 0ddd8f8..05fcbb6 100644
--- a/examples/maildirresource/maildirresource.cpp
+++ b/examples/maildirresource/maildirresource.cpp
@@ -167,6 +167,7 @@ void MaildirResource::synchronizeMails(Sink::Storage::Transaction &transaction,
167 } 167 }
168 ); 168 );
169 169
170 mSynchronizerQueue.startTransaction();
170 int count = 0; 171 int count = 0;
171 while (entryIterator->hasNext()) { 172 while (entryIterator->hasNext()) {
172 count++; 173 count++;
@@ -196,6 +197,7 @@ void MaildirResource::synchronizeMails(Sink::Storage::Transaction &transaction,
196 197
197 createOrModify(transaction, synchronizationTransaction, *mMailAdaptorFactory, bufferType, remoteId, mail); 198 createOrModify(transaction, synchronizationTransaction, *mMailAdaptorFactory, bufferType, remoteId, mail);
198 } 199 }
200 mSynchronizerQueue.commit();
199 const auto elapsed = time->elapsed(); 201 const auto elapsed = time->elapsed();
200 Trace() << "Synchronized " << count << " mails in " << listingPath << Sink::Log::TraceTime(elapsed) << " " << elapsed/qMax(count, 1) << " [ms/mail]"; 202 Trace() << "Synchronized " << count << " mails in " << listingPath << Sink::Log::TraceTime(elapsed) << " " << elapsed/qMax(count, 1) << " [ms/mail]";
201 203