From: Austin Clements Date: Wed, 26 Jan 2011 11:52:54 +0000 (+1000) Subject: Do not defer maildir flag synchronization for new messages X-Git-Tag: debian/0.6_254~202 X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=commitdiff_plain;h=de2acbd49c8fdb0c5bc28513283a9e12eefdaca3 Do not defer maildir flag synchronization for new messages This is a simplified version of a patch originally by Michal Sojka which is designed to have the same performance benefits. Michal said the following: When notmuch new is run for the first time, it is not necessary to defer maildir flags synchronization to later because we already know that no files will be removed. Performing the maildinr flag synchronization immediately after the message is added to the database has the advantage that the message is likely hot in the disk cache so the synchronization is faster. Additionally, we also save one database query for each message, which must be performed when the operation is deferred. Without this patch, the first notmuch new of 200k messages (3 GB) took 1h and 46m out of which 20m was maildir flags synchronization. With this patch, the whole operation took only 1h and 36m. Unlike Michal's patch, this version does the deferral for any new message, rather than doing it only on the first run of "notmuch new". --- diff --git a/notmuch-new.c b/notmuch-new.c index cdf85135..7aa0674d 100644 --- a/notmuch-new.c +++ b/notmuch-new.c @@ -420,11 +420,8 @@ add_files_recursive (notmuch_database_t *notmuch, state->added_messages++; for (tag=state->new_tags; *tag != NULL; tag++) notmuch_message_add_tag (message, *tag); - /* Defer sync of maildir flags until after old filenames - * are removed in the case of a rename. */ if (state->synchronize_flags == TRUE) - _filename_list_add (state->message_ids_to_sync, - notmuch_message_get_message_id (message)); + notmuch_message_maildir_flags_to_tags (message); break; /* Non-fatal issues (go on to next file) */ case NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID: