From: Christian Weisgerber Subject: Re: Got is kinda slow To: gameoftrees@openbsd.org Date: Mon, 17 Apr 2023 23:34:33 +0200 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. Baseline: 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 there. 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. git: 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