From: Junio C Hamano Date: Thu, 28 Apr 2011 20:20:54 GMT Subject: Re: [PATCH] git gc: Speed it up by 18% via faster hash comparisons Message-ID: <7v8vuu3z6h.fsf@alter.siamese.dyndns.org> In-Reply-To: <20110428101902.GA17257@elte.hu> Ingo Molnar writes: > In any case, i'll retract the null case as it really isnt called that often in > the tests i've done - updated patch below - it simply falls back on to hashcmp. > > Thanks, > > Ingo > > Signed-off-by: Ingo Molnar Thanks, will queue this version. > diff --git a/cache.h b/cache.h > index 2674f4c..39fa9cd 100644 > --- a/cache.h > +++ b/cache.h > @@ -675,14 +675,24 @@ 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); > + int i; > + > + for (i = 0; i < 20; i++, sha1++, sha2++) { > + if (*sha1 != *sha2) > + return *sha1 - *sha2; > + } > + > + return 0; > } > -static inline int hashcmp(const unsigned char *sha1, const unsigned char *sha2) > + > +static inline int is_null_sha1(const unsigned char *sha1) > { > - return memcmp(sha1, sha2, 20); > + return !hashcmp(sha1, null_sha1); > } > + > static inline void hashcpy(unsigned char *sha_dst, const unsigned char *sha_src) > { > memcpy(sha_dst, sha_src, 20);