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

Re: [PATCH] fast-import: use hashcmp() for SHA1 hash comparison

From
René Scharfe <l.s.r@web.de>
Date
Jul 18, 2014, 19:14 UTC
Message-ID
<53C971FD.6040500@web.de>
In-Reply-To
<20140718184246.GS12427@google.com>
Am 18.07.2014 20:42, schrieb Jonathan Nieder:
Show 25 quoted lines
> René Scharfe wrote:
>
>> Signed-off-by: Rene Scharfe <l.s.r@web.de>
>> ---
>>   fast-import.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> Before:
>
>    $ size git-fast-import
>       text    data     bss     dec     hex filename
>     804138    6768  754160 1565066  17e18a git-fast-import
>
> After:
>
>    $ size git-fast-import
>       text    data     bss     dec     hex filename
>     804154    6768  754160 1565082  17e19a git-fast-import
>
> So this makes the text size worse on this machine (amd64, building
> with gcc 4.8.2 -O2).  That's probably because the old code does 'call
> memcmp', while the new code inlines it.  Inlining is presumably the
> better choice.
>
> More importantly, the new code is more readable.
Yes, the latter point is the important one.

If inlining is really better is another matter; I don't understand how 1a812f3a (hashcmp(): inline memcmp() by hand to optimize) could have made git gc 18% faster, as it claimed. I would expect memcmp(), which can compare more than a byte at a time, to be significantly faster -- or at least just as fast as whatever the compiler does with the inlined version.

René
Previous: Jonathan NiederNext: Jeff King
Message 3 of 7 in “fast-import: use hashcmp() for SHA1 hash comparison”
  1. fast-import: use hashcmp() for SHA1 hash comparisonRené Scharfe, Jul 18, 2014
  2. Jonathan NiederJul 18, 2014
  3. René ScharfeJul 18, 2014
  4. Jeff KingJul 18, 2014
  5. René ScharfeJul 19, 2014
  6. brian m. carlsonJul 19, 2014
  7. René ScharfeJul 19, 2014

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.