From: Timo Sirainen Date: Mon, 12 Jun 2023 14:33:59 +0000 (+0300) Subject: lib-index: mail_index_seq_array_lookup() - Optimize append code path X-Git-Tag: 2.4.0~2695 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3097e0fd077fc04334764983a30440d7dee3c171;p=thirdparty%2Fdovecot%2Fcore.git lib-index: mail_index_seq_array_lookup() - Optimize append code path --- diff --git a/src/lib-index/mail-index-util.c b/src/lib-index/mail-index-util.c index 2b27ae1e70..b61cf8d32f 100644 --- a/src/lib-index/mail-index-util.c +++ b/src/lib-index/mail-index-util.c @@ -88,6 +88,15 @@ static int mail_index_seq_record_cmp(const uint32_t *key_seq, bool mail_index_seq_array_lookup(const ARRAY_TYPE(seq_array) *array, uint32_t seq, unsigned int *idx_r) { + /* fast path: expect array to be usually appended to */ + unsigned int count = array_count(array); + if (count > 0) { + const uint32_t *elem = array_back(array); + if (seq > *elem) { + *idx_r = count; + return FALSE; + } + } return array_bsearch_insert_pos(array, &seq, mail_index_seq_record_cmp, idx_r); }