From 88d97300ed6d604f5cbe426bb8c5e2fd52762518 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Thu, 11 Feb 2016 16:32:50 +0100 Subject: 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. --- examples/maildirresource/maildirresource.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'examples/maildirresource') 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, } ); + mSynchronizerQueue.startTransaction(); int count = 0; while (entryIterator->hasNext()) { count++; @@ -196,6 +197,7 @@ void MaildirResource::synchronizeMails(Sink::Storage::Transaction &transaction, createOrModify(transaction, synchronizationTransaction, *mMailAdaptorFactory, bufferType, remoteId, mail); } + mSynchronizerQueue.commit(); const auto elapsed = time->elapsed(); Trace() << "Synchronized " << count << " mails in " << listingPath << Sink::Log::TraceTime(elapsed) << " " << elapsed/qMax(count, 1) << " [ms/mail]"; -- cgit v1.2.3