Branch: refs/heads/master Author: Colomban Wendling ban@herbesfolles.org Committer: Colomban Wendling ban@herbesfolles.org Date: Sun, 07 Feb 2016 03:35:36 UTC Commit: 77563203d6eb0cea464a4b1745e368360e6d89fb https://github.com/geany/geany-plugins/commit/77563203d6eb0cea464a4b1745e368...
Log Message: ----------- debugger/gdb_mi: Improve implementation of parse_cstring()
Copy blocks as long as possible at once instead of byte by byte, e.g. everything between two escape sequences at once.
This gives a speedup of about 8% on typical data with few escape sequences.
Modified Paths: -------------- debugger/src/gdb_mi.c
Modified: debugger/src/gdb_mi.c 10 lines changed, 8 insertions(+), 2 deletions(-) =================================================================== @@ -98,13 +98,17 @@ static gchar *parse_cstring(const gchar **p)
if (**p == '"') { + const gchar *base; + (*p)++; + base = *p; while (**p != '"') { gchar c = **p; /* TODO: check expansions here */ if (c == '\') { + g_string_append_len(str, base, (*p) - base); (*p)++; c = **p; switch (g_ascii_tolower(c)) @@ -159,12 +163,14 @@ static gchar *parse_cstring(const gchar **p) } break; } + g_string_append_c(str, c); + base = (*p) + 1; } - if (**p == '\0') + else if (**p == '\0') break; - g_string_append_c(str, c); (*p)++; } + g_string_append_len(str, base, (*p) - base); if (**p == '"') (*p)++; }
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).