Skip to content

Commit efa67bf

Browse files
committed
Merge branch 'im/hashcmp-optim'
* im/hashcmp-optim: hashcmp(): inline memcmp() by hand to optimize
2 parents ac13e7c + 1a812f3 commit efa67bf

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

cache.h

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -676,14 +676,24 @@ extern char *sha1_pack_name(const unsigned char *sha1);
676676
extern char *sha1_pack_index_name(const unsigned char *sha1);
677677
extern const char *find_unique_abbrev(const unsigned char *sha1, int);
678678
extern const unsigned char null_sha1[20];
679-
static inline int is_null_sha1(const unsigned char *sha1)
679+
680+
static inline int hashcmp(const unsigned char *sha1, const unsigned char *sha2)
680681
{
681-
return !memcmp(sha1, null_sha1, 20);
682+
int i;
683+
684+
for (i = 0; i < 20; i++, sha1++, sha2++) {
685+
if (*sha1 != *sha2)
686+
return *sha1 - *sha2;
687+
}
688+
689+
return 0;
682690
}
683-
static inline int hashcmp(const unsigned char *sha1, const unsigned char *sha2)
691+
692+
static inline int is_null_sha1(const unsigned char *sha1)
684693
{
685-
return memcmp(sha1, sha2, 20);
694+
return !hashcmp(sha1, null_sha1);
686695
}
696+
687697
static inline void hashcpy(unsigned char *sha_dst, const unsigned char *sha_src)
688698
{
689699
memcpy(sha_dst, sha_src, 20);

0 commit comments

Comments
 (0)