Re: [PATCH v3] skip_prefix: rewrite so that prefix is scanned once
- From
Duy Nguyen <pclouds@gmail.com>
- Date
- Mar 3, 2014, 23:37 UTC
- Message-ID
- <CACsJy8ASBeravdk67pbOJbrFUbwg21JwYcLtSbDDMJOu9-F=yA@mail.gmail.com>
- In-Reply-To
- <xmqq61nuoqd5.fsf@gitster.dls.corp.google.com>
On Tue, Mar 4, 2014 at 5:43 AM, Junio C Hamano <gitster@pobox.com> wrote:
Show 10 quoted lines
> diff --git a/git-compat-util.h b/git-compat-util.h
> index cbd86c3..68ffaef 100644
> --- a/git-compat-util.h
> +++ b/git-compat-util.h
> @@ -357,8 +357,14 @@ extern int suffixcmp(const char *str, const char *suffix);
>
> static inline const char *skip_prefix(const char *str, const char *prefix)
> {
> - size_t len = strlen(prefix);
> - return strncmp(str, prefix, len) ? NULL : str + len;Just a note. gcc does optimize strlen("abcdef") to 6, and with that information at compile time built-in strncmp might do better.
Show 11 quoted lines
> + while (1) {
> + if (!*prefix)
> + return str;
> + if (*str != *prefix)
> + return NULL;
> + prefix++;
> + str++;
> + }
> }
>
> #if defined(NO_MMAP) || defined(USE_WIN32_MMAP)-- Duy