From: Alex Riesen Date: Fri, 29 Apr 2011 07:05:46 GMT Subject: Re: [PATCH] git gc: Speed it up by 18% via faster hash comparisons Message-ID: In-Reply-To: On Thu, Apr 28, 2011 at 13:59, Erik Faye-Lund wrote: > diff --git a/cache.h b/cache.h > index c730c58..8bc03c6 100644 > --- a/cache.h > +++ b/cache.h > @@ -681,13 +681,17 @@ extern char *sha1_pack_name(const unsigned char *sha1); >  extern char *sha1_pack_index_name(const unsigned char *sha1); >  extern const char *find_unique_abbrev(const unsigned char *sha1, int); >  extern const unsigned char null_sha1[20]; > -static inline int is_null_sha1(const unsigned char *sha1) > +static inline int hashcmp(const unsigned char *sha1, const unsigned char *sha2) >  { > -       return !memcmp(sha1, null_sha1, 20); > +       /* early out for fast mis-match */ > +       if (*sha1 != *sha2) > +               return *sha1 - *sha2; Can one take advantage of common expression optimization here? Like this: + if (*sha1 - *sha2) + return *sha1 - *sha2;