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

Re: Bad performance when using git log --parents (used by gitk)

From
Jeff King <peff@peff.net>
Date
Apr 4, 2019, 01:36 UTC
Message-ID
<20190404013606.GB4409@sigill.intra.peff.net>
In-Reply-To
<nycvar.QRO.7.76.6.1904022017510.41@tvgsbejvaqbjf.bet>
On Tue, Apr 02, 2019 at 08:20:05PM +0200, Johannes Schindelin wrote:
Show 16 quoted lines
> > Hitting some quadratic complexity algorithm explains why the "degradation"
> > is so huge. And if I understand it correctly we are more or less "unlucky"
> > to hit such access patterns more often in the new repo.
> >
> > Anyway, nice to see that you already have some ideas regarding how to
> > improve this.
> 
> In the meantime, maybe the commit graph feature can help you?
> 
> 	git config --global core.commitGraph true
> 	git config --global gc.writeCommitGraph true
> 	git commit-graph write --reachable
> 
> The idea being that the commit graph extracts a lot of information
> pre-emptively and makes the lookup of those bits faster than unpacking the
> commits all the time.

I'd definitely encourage Björn (or anybody with a biggish repo) to check out the commit-graph work, because it's really cool. But it won't help much here, because the quadratic loop is just on linked-list insertion. We're literally spending all of our time chasing pointers in memory.

-Peff
Previous: Johannes SchindelinNext: Jeff King
Message 5 of 7 in “Bad performance when using git log --parents (used by gitk)”
  1. Björn Pettersson AApr 2, 2019
  2. Jeff KingApr 2, 2019
  3. Björn Pettersson AApr 2, 2019
  4. Johannes SchindelinApr 2, 2019
  5. Jeff KingApr 4, 2019
  6. revision: use a prio_queue to hold rewritten parentsJeff King, Apr 4, 2019
  7. Jeff KingApr 4, 2019

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.