From 4dae65d80242c9c3c5bc22931132b64d53da863f Mon Sep 17 00:00:00 2001 From: Alexander Butenko Date: Thu, 14 Jan 2010 01:52:43 +0100 Subject: [PATCH] Speedup adblock by removing greedy regex if we have 1 or 2 signatures --- extensions/adblock.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/extensions/adblock.c b/extensions/adblock.c index 26ec5378..042cfde3 100644 --- a/extensions/adblock.c +++ b/extensions/adblock.c @@ -926,6 +926,7 @@ adblock_compile_regexp (GHashTable* tbl, if (!g_regex_match_simple ("^/.*[\\^\\$\\*].*/$", patt, G_REGEX_UNGREEDY, G_REGEX_MATCH_NOTEMPTY)) { int len = strlen (patt); + int signature_count = 0; for (pos = len - SIGNATURE_SIZE; pos >= 0; pos--) { sig = g_strndup (patt + pos, SIGNATURE_SIZE); if (!g_regex_match_simple ("[\\*]", sig, G_REGEX_UNGREEDY, G_REGEX_MATCH_NOTEMPTY) && @@ -933,6 +934,7 @@ adblock_compile_regexp (GHashTable* tbl, { /* g_debug ("sig: %s %s", sig, patt); */ g_hash_table_insert (keystbl, sig, regex); + signature_count++; } else { @@ -945,6 +947,8 @@ adblock_compile_regexp (GHashTable* tbl, g_free (sig); } } + if (signature_count > 1 && g_hash_table_lookup (tbl, opts)) + g_hash_table_steal (tbl, opts); } else {