"GOT", but the "O" is a cute, smiling pufferfish. Index | Thread | Search

Christian Weisgerber <naddy@mips.inka.de>
Re: Got is kinda slow
Mon, 17 Apr 2023 23:34:33 +0200

Download raw body.

Stefan Sperling:

> Below is a patch which implements caching of parsed trees in got-read-pack.
> Unfortunately, this does not seem to help your case much, if at all.

   12m35.32s real    12m03.32s user     0m32.00s system

With this patch (!):
   24m02.20s real    21m58.82s user     2m03.75s system

> On my x250 it usally completes with a one minute or two for ports with
> much history like devel/gmake. Not great, but not catastrophic either
> given that people rarely go digging into the history of a specific path
> during most workflows.

I don't know.  For me, "cd /usr/ports/foo/bar && tog log ." is
pretty natural.  However, in a repository the size of FreeBSD
ports.git, it can be painfully slow.  Think of somebody who's new
to Got and just wants to try it out for a bit.  They'll stop right

Anyway, I only wanted to point out an issue to be aware of.  I didn't
think you'd right away try to work on this.

> I am afraid the only way I see to speed this up is to get rid of entry
> sorting in the tree parser and then deal with the consequences of doing so.
> Which isn't going to be pretty. Does anyone else have other ideas?

If I understand the profiling graph correctly, got spends 1/3 of
its time in inflate().  I would naively think that git also needs
to decompress the same data, but its total runtime is a fraction
of the time got spends decompressing.  How can that be?  And git
log is not multithreaded.

    0m50.69s real     0m44.59s user     0m05.81s system

(Those figure are now on OpenBSD.  got built in non-release mode,
i.e. -O0.)

Christian "naddy" Weisgerber                          naddy@mips.inka.de