dovecot-2.0: lib-storage: Minor optimization to search build ini...

dovecot at dovecot.org dovecot at dovecot.org
Tue Apr 13 19:02:01 EEST 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/8d1d1eb2c2a0
changeset: 11145:8d1d1eb2c2a0
user:      Timo Sirainen <tss at iki.fi>
date:      Tue Apr 13 19:01:58 2010 +0300
description:
lib-storage: Minor optimization to search build initialization code.

diffstat:

 src/lib-storage/mail-search-register.c |  10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

diffs (38 lines):

diff -r c6db5769942f -r 8d1d1eb2c2a0 src/lib-storage/mail-search-register.c
--- a/src/lib-storage/mail-search-register.c	Tue Apr 13 18:59:23 2010 +0300
+++ b/src/lib-storage/mail-search-register.c	Tue Apr 13 19:01:58 2010 +0300
@@ -8,6 +8,8 @@
 struct mail_search_register {
 	ARRAY_DEFINE(args, struct mail_search_register_arg);
 	mail_search_register_fallback_t *fallback;
+
+	unsigned int args_sorted:1;
 };
 
 struct mail_search_register *mail_search_register_init(void)
@@ -41,7 +43,7 @@
 			      unsigned int count)
 {
 	array_append(&reg->args, arg, count);
-	array_sort(&reg->args, mail_search_register_arg_cmp);
+	reg->args_sorted = FALSE;
 }
 
 void mail_search_register_fallback(struct mail_search_register *reg,
@@ -55,6 +57,11 @@
 {
 	struct mail_search_register_arg arg;
 
+	if (!reg->args_sorted) {
+		array_sort(&reg->args, mail_search_register_arg_cmp);
+		reg->args_sorted = TRUE;
+	}
+
 	arg.key = key;
 	return array_bsearch(&reg->args, &arg, mail_search_register_arg_cmp);
 }
@@ -68,4 +75,3 @@
 	*fallback_r = reg->fallback;
 	return TRUE;
 }
-


More information about the dovecot-cvs mailing list