Re: [PATCH] git gc: Speed it up by 18% via faster hash comparisons
- From
Alex Riesen <raa.lkml@gmail.com>
- Date
- Apr 29, 2011, 07:05 UTC
- Message-ID
- <BANLkTikt0CU87maPs65WGi0oopD+g0uVDA@mail.gmail.com>
- In-Reply-To
- <BANLkTik-uk-mpdHZxcz8Nem=nEzED_tuJg@mail.gmail.com>
On Thu, Apr 28, 2011 at 13:59, Erik Faye-Lund <kusmabite@gmail.com> wrote:
Show 15 quoted lines
> 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;