[Xfce4-commits] <midori:master> Some tiny Adblock speed-ups with regex optimization
Christian Dywan
noreply at xfce.org
Wed Jun 8 20:26:02 CEST 2011
Updating branch refs/heads/master
to 5f1cd907ad4ff7678c9204e44d938a4c8663c3fe (commit)
from 4e656cc127f2a9eee78ed3e8dc48ca7630f9ff25 (commit)
commit 5f1cd907ad4ff7678c9204e44d938a4c8663c3fe
Author: Alexander Butenko <a.butenka at gmail.com>
Date: Mon Jun 6 10:30:30 2011 -0400
Some tiny Adblock speed-ups with regex optimization
extensions/adblock.c | 39 ++++++++++++++++++++-------------------
1 files changed, 20 insertions(+), 19 deletions(-)
diff --git a/extensions/adblock.c b/extensions/adblock.c
index 4b92a99..47fb5b5 100644
--- a/extensions/adblock.c
+++ b/extensions/adblock.c
@@ -82,7 +82,8 @@ adblock_build_js (const gchar* style,
}
static gchar *
-adblock_fixup_regexp (gchar* src);
+adblock_fixup_regexp (const gchar* prefix,
+ gchar* src);
static void
adblock_init_db ()
@@ -652,7 +653,7 @@ adblock_is_matched_by_key (const gchar* opts,
int pos = 0;
GList* regex_bl = NULL;
- uri = adblock_fixup_regexp ((gchar*)req_uri);
+ uri = adblock_fixup_regexp ("", (gchar*)req_uri);
len = strlen (uri);
for (pos = len - SIGNATURE_SIZE; pos >= 0; pos--)
{
@@ -1050,7 +1051,8 @@ adblock_app_add_browser_cb (MidoriApp* app,
}
static gchar *
-adblock_fixup_regexp (gchar* src)
+adblock_fixup_regexp (const gchar* prefix,
+ gchar* src)
{
gchar* dst;
GString* str;
@@ -1059,7 +1061,7 @@ adblock_fixup_regexp (gchar* src)
if (!src)
return NULL;
- str = g_string_new ("");
+ str = g_string_new (prefix);
/* lets strip first .* */
if (src[0] == '*')
@@ -1167,42 +1169,41 @@ adblock_compile_regexp (GHashTable* tbl,
}
static gchar*
-adblock_add_url_pattern (gchar* format,
+adblock_add_url_pattern (gchar* prefix,
gchar* type,
gchar* line)
{
gchar** data;
gchar* patt;
- gchar* fixed_patt;
gchar* format_patt;
gchar* opts;
+ g_test_timer_start ();
data = g_strsplit (line, "$", -1);
if (data && data[0] && data[1] && data[2])
{
- patt = g_strdup_printf ("%s%s", data[0], data[1]);
- opts = g_strdup_printf ("type=%s,regexp=%s,%s", type, patt, data[2]);
+ patt = g_strconcat (data[0], data[1], NULL);
+ opts = g_strdup_printf ("t=%s,r=%s,%s", type, patt, data[2]);
+ g_strfreev (data);
}
else if (data && data[0] && data[1])
{
- patt = g_strdup (data[0]);
- opts = g_strdup_printf ("type=%s,regexp=%s,%s", type, patt, data[1]);
+ patt = data[0];
+ opts = g_strdup_printf ("t=%s,r=%s,%s", type, patt, data[1]);
+ g_free (data[1]);
}
else
{
- patt = g_strdup (data[0]);
- opts = g_strdup_printf ("type=%s,regexp=%s", type, patt);
+ patt = data[0];
+ opts = g_strdup_printf ("t=%s,r=%s", type, patt);
}
- fixed_patt = adblock_fixup_regexp (patt);
- format_patt = g_strdup_printf (format, fixed_patt);
+ format_patt = adblock_fixup_regexp (prefix, patt);
adblock_debug ("got: %s opts %s", format_patt, opts);
adblock_compile_regexp (pattern, keys, format_patt, opts);
- g_strfreev (data);
g_free (patt);
- g_free (fixed_patt);
return format_patt;
}
@@ -1306,14 +1307,14 @@ adblock_parse_line (gchar* line)
{
(void)*line++;
(void)*line++;
- return adblock_add_url_pattern ("%s", "fulluri", line);
+ return adblock_add_url_pattern ("", "fulluri", line);
}
if (line[0] == '|')
{
(void)*line++;
- return adblock_add_url_pattern ("^%s", "fulluri", line);
+ return adblock_add_url_pattern ("^", "fulluri", line);
}
- return adblock_add_url_pattern ("%s", "uri", line);
+ return adblock_add_url_pattern ("", "uri", line);
}
static gboolean
More information about the Xfce4-commits
mailing list