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

Re: [PATCH 2/2] refs/files: use heuristic to decide whether to repack with `--auto`

From
Junio C Hamano <gitster@pobox.com>
Date
Sep 4, 2024, 16:15 UTC
Message-ID
<xmqqzfonbdkq.fsf@gitster.g>
In-Reply-To
<ZtgPSGMD0ZV3S0Nn@pks.im>
Patrick Steinhardt <ps@pks.im> writes:
Show 9 quoted lines
> In any case, GCC is clever enough to notice what we're doing:
>
>     fastlog2(unsigned long):
>             xor     eax, eax
>             test    rdi, rdi
>             je      .L5
>             bsr     rax, rdi
>     .L5:
>             ret
Nice.  Aiming to compile to "bsr" is very good.
Show 15 quoted lines
> So with the following definition we're optimizing both with GCC and
> Clang:
>
>     size_t fastlog2(size_t sz)
>     {
>         size_t l = 0;
>         if (!sz)
>             return 0;
>         for (; sz; sz >>= 1)
>             l++;
>         return l;
>     }
>
> I'd thus say we can just pick that function instead of caring about
> platform endianess with `ffs()`.

The above loop that compilers seem to know to reduce to "bsr" is good.

FWIW, because the definition of "first bit" in ffs() is "least significant bit", you do not need to worry about endianness at all, but what we want is most significant, so it is not directly usable.

Previous: Patrick SteinhardtNext: Patrick Steinhardt
Message 8 of 16 in “refs/files: use heuristic to decide whether to repack with `--auto`”
  1. 0/2 refs/files: use heuristic to decide whether to repack with `--auto`Patrick Steinhardt, Sep 2, 2024
  2. 1/2 t0601: merge tests for auto-packing of refsPatrick Steinhardt, Sep 2, 2024
  3. 2/2 refs/files: use heuristic to decide whether to repack with `--auto`Patrick Steinhardt, Sep 2, 2024
  4. karthik nayakSep 3, 2024
  5. Patrick SteinhardtSep 3, 2024
  6. Junio C HamanoSep 3, 2024
  7. Patrick SteinhardtSep 4, 2024
  8. Junio C HamanoSep 4, 2024
  9. Patrick SteinhardtSep 4, 2024
  10. karthik nayakSep 5, 2024
  11. 0/3 refs/files: use heuristics to decide whether to repack with `--auto`Patrick Steinhardt, Sep 4, 2024
  12. 1/3 wrapper: introduce `log2u()`Patrick Steinhardt, Sep 4, 2024
  13. 2/3 t0601: merge tests for auto-packing of refsPatrick Steinhardt, Sep 4, 2024
  14. 3/3 refs/files: use heuristic to decide whether to repack with `--auto`Patrick Steinhardt, Sep 4, 2024
  15. Junio C HamanoSep 4, 2024
  16. Patrick SteinhardtSep 5, 2024

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.