git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] sha1_file: avoid comparison if no packed hash matches the first byte

From
Jeff King <peff@peff.net>
Date
Aug 9, 2017, 09:20 UTC
Message-ID
<20170809092005.tnazbnbgn4piv76r@sigill.intra.peff.net>
In-Reply-To
<xmqqpoc58fq6.fsf@gitster.mtv.corp.google.com>
On Tue, Aug 08, 2017 at 10:36:33PM -0700, Junio C Hamano wrote:
Show 8 quoted lines
> > Actually, I take it back. The problem happens when we enter the loop
> > with no entries to look at. But both sha1_pos() and sha1_entry_pos()
> > return early before hitting their do-while loops in that case.
> 
> Ah, I was not looking at that part of the code.  Thanks.
> 
> I still wonder if we want to retire that conditional invocation of
> sha1_entry_pos(), though.

I think so. Digging in the list for it, almost every mention is either somebody asking "should we scrap this?" or somebody showing benchmarks in which it is slower than the normal lookup (and then somebody asking "should we scrap this" :) ).

I just re-ran a simple benchmark and it is indeed slower. I also came across the hashcmp open-code-versus-memcmp discussion, which shows that the memcmp in recent glibc is much faster. That has been around long enough that it's probably worth switching to.

-Peff
Previous: Junio C HamanoNext: Jeff King
Message 7 of 14 in “sha1_file: avoid comparison if no packed hash matches the first byte”
  1. sha1_file: avoid comparison if no packed hash matches the first byteRené Scharfe, Aug 8, 2017
  2. Jonathan NiederAug 8, 2017
  3. Junio C HamanoAug 8, 2017
  4. Jeff KingAug 8, 2017
  5. Jeff KingAug 8, 2017
  6. Junio C HamanoAug 9, 2017
  7. Jeff KingAug 9, 2017
  8. Jeff KingAug 9, 2017
  9. 1/2 sha1_file: drop experimental GIT_USE_LOOKUP searchJeff King, Aug 9, 2017
  10. Junio C HamanoAug 9, 2017
  11. Jeff KingAug 9, 2017
  12. 2/2 hashcmp: use memcmp instead of open-coded loopJeff King, Aug 9, 2017
  13. René ScharfeAug 9, 2017
  14. Jeff KingAug 9, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.