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

Re: Some git performance measurements..

From
Linus Torvalds <torvalds@linux-foundation.org>
Date
Nov 30, 2007, 02:54 UTC
Message-ID
<alpine.LFD.0.9999.0711291836230.8458@woody.linux-foundation.org>
In-Reply-To
<alpine.LFD.0.9999.0711291812530.8458@woody.linux-foundation.org>
On Thu, 29 Nov 2007, Linus Torvalds wrote:
> 
> Something like the appended (untested!

Ok, tested now. It does seem to work. The page fault trace for the pack-file shows that we now get basically perfect IO patterns for my "git checkout" testcase, and while I'm not sure that's necessarily a test-case that really deserves this kind of attention, it's certainly potentially interesting.

To check the performance impact of this, though, you'd need to pack the same repository two different ways - with this kind of sorting change and without - and then test different cold-cache timings for things like "git blame" etc that might care.

The timing of the commands itself could be done with either a pre-change or post-change version of git, it's only the resulting order in the pack-file that matters.

My very unscientific tests says that "git read-tree" is speed up by the change (from 5.2s to 3.3s, so it's quite noticeable), but "git blame" slows down (from 8.7s to 12.9s, so that's quite noticeable too). But as Jakub pointed out, the cold-cache numbers do fluctuate a lot, and while they were reasonably stable over runs, the "git blame" numbers in particular probably depend a fair amount on whether the file is commonly changed or not.

Anybody interested in trying to do something more scientific?
			Linus
Previous: Brian DowningNext: Federico Mena Quintero
Message 23 of 28 in “Some git performance measurements..”
  1. Linus TorvaldsNov 29, 2007
  2. Linus TorvaldsNov 29, 2007
  3. Nicolas PitreNov 29, 2007
  4. Linus TorvaldsNov 29, 2007
  5. Nicolas PitreNov 29, 2007
  6. Linus TorvaldsNov 29, 2007
  7. Nicolas PitreNov 29, 2007
  8. Junio C HamanoNov 30, 2007
  9. Linus TorvaldsNov 30, 2007
  10. Jakub NarebskiNov 30, 2007
  11. Linus TorvaldsNov 30, 2007
  12. Jakub NarebskiNov 30, 2007
  13. Nicolas PitreNov 30, 2007
  14. Steffen ProhaskaNov 30, 2007
  15. Mike RalphsonDec 7, 2007
  16. Johannes SchindelinDec 7, 2007
  17. Linus TorvaldsDec 7, 2007
  18. Mike RalphsonDec 7, 2007
  19. Johannes SchindelinDec 7, 2007
  20. Mike RalphsonDec 7, 2007
  21. Johannes SchindelinDec 8, 2007
  22. Brian DowningDec 8, 2007
  23. Linus TorvaldsNov 30, 2007
  24. Federico Mena QuinteroDec 5, 2007
  25. Joachim B HagaDec 1, 2007
  26. Linus TorvaldsDec 1, 2007
  27. Junio C HamanoNov 29, 2007
  28. per-directory-exclude: lazily read .gitignore filesJunio C Hamano, Nov 29, 2007

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.