Re: [PATCH v2 0/3] receive-pack: only use visible refs for connectivity check

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Nov 03, 2022 at 03:37:25PM +0100, Patrick Steinhardt wrote:

> Overall the performance improvement isn't quite as strong as before:
> we're only 4.5x faster compared to 6.5x in our repo. But I guess that's
> still a good-enough improvement, doubly so that there are no downsides
> for repos anymore that ain't got any hidden refs.

Just a guess, but the extra time is probably spent because "rev-list"
has to iterate over your kajillion refs saying "nope, not this one".

I wonder if there is a way to carve up the ref namespace early, in a
trie-like way, similar to how for_each_fullref_in_prefixes() skips
straight to the interesting part. It's a harder problem, because we are
excluding rather than including entries based on our patterns. But it
seems like you'd be able to notice that we are on "refs/foo/bar", that
all of "refs/foo" is excluded, and jump ahead to the end of the
"refs/foo" section by binary-searching for the end within the
packed-refs file.

And that would speed up both this rev-list, but also the initial
advertisement that receive-pack does, because it's also iterating all of
these saying "nope, it's hidden". And assuming these are all internal
refs you hide from users, upload-pack would benefit, too.

I don't think that should be part of this series, but it may be an
interesting future direction.

-Peff



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux