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

Re: Mercurial 0.3 vs git benchmarks

From
MMMatt Mackall <mpm@selenic.com>
Date
Apr 26, 2005, 04:01 UTC
Message-ID
<20050426040127.GK21897@waste.org>
In-Reply-To
<Pine.LNX.4.58.0504251859550.18901@ppc970.osdl.org>
On Mon, Apr 25, 2005 at 07:08:28PM -0700, Linus Torvalds wrote:
Show 31 quoted lines
> 
> 
> On Mon, 25 Apr 2005, Matt Mackall wrote:
> >
> > Here are the results of checking in the first 12 releases of Linux 2.6
> > into empty repositories for Mercurial v0.3 (hg) and git-pasky-0.7.
> > This is on my 512M Pentium M laptop. Times are in seconds.
> > 
> >                  user         system       real        du -sh
> > ver    files   hg    git    hg    git    hg    git    hg   git
> > 
> > 2.6.0  15007 19.949 35.526 3.171 2.264 25.138 87.994 145M   89M
> > 2.6.1    998  5.906  4.018 0.573 0.464 10.267  5.937 146M   99M
> > 2.6.2   2370  9.696 13.051 0.752 0.652 12.970 15.167 150M  117M
> > 2.6.3   1906 10.528 11.509 0.816 0.639 18.406 14.318 152M  135M
> > 2.6.4   3185 11.140  7.380 0.997 0.731 15.265 12.412 156M  158M
> > 2.6.5   2261 10.961  6.939 0.843 0.640 20.564  8.522 158M  177M
> > 2.6.6   2642 11.803 10.043 0.870 0.678 22.360 11.515 162M  197M
> > 2.6.7   3772 18.411 15.243 1.189 0.915 32.397 21.498 165M  227M
> > 2.6.8   4604 20.922 16.054 1.406 1.041 39.622 25.056 172M  262M
> > 2.6.9   4712 19.306 12.145 1.421 1.102 35.663 24.958 179M  297M
> > 2.6.10  5384 23.022 18.154 1.393 1.182 40.947 32.085 186M  338M
> > 2.6.11  5662 27.211 19.138 1.791 1.253 42.605 31.902 193M  379M
> 
> That time in checking things in is worrisome.
> 
> "git" is basically linear in the size of the patch, which is what I want,
> since most patches I work with are a couple of files at most. The patches
> you are checking in are huge - I never actually work with a change that is
> as big as a whole release. I work with changes that are five files or
> something.

Git (and hg) commit time should be basically linear in the number of files touched, not the size of the patch.

> "hg" seems to basically slow down the more patches you have applied. It's 
> hard to tell from the limited test set, but look at "user" time. It seems 
> to increase from 6 seconds to 27 seconds.

And the number of files checked in grows from ~1000 to ~6000. Note that git is growing from 4 to 19 seconds as well. Interestingly:

19.138/4.018 = 4.76 (git time ratio) 27.211/5.906 = 4.61 (hg time ratio)

So the scaling here is pretty similar.
> To make an interesting benchmark, try applying the first 200 patches in 
> the current git kernel archive. Can you do them three per second? THAT is 
> the thing you should optimize for, not checking in huge changes.

I'm not versant enough with git enough to know how but I'll give it a shot. Do you have the patches in an mbox, perchance? This is Andrew's x/198 patch bomb? It might be simpler for me to just apply everything in -mm to git and hg and compare times. Modulo python startup time, it should be pretty similar.

Oh, and can you send me the script you used for your test with git?
> If you're checking in a change to 1000+ files, you're doing something
> wrong.

That's primarily to demonstrate the scalability and show the divergence in repository sizes.

However, it will not be uncommon for developers to pull/merge changes that large and the numbers here will be about the same for hg.

Show 8 quoted lines
> > Full-tree working dir diff (2.6.0 base with 2.6.1 in working dir):
> > hg:  real 4.920s  user 4.629s  sys 0.260s
> > git: real 3.531s  user 1.869s  sys 0.862s
> > (this needed an update-cache --refresh on top of git commit, which
> > took another: real 2m52.764s  user 2.833s  sys 1.008s)
> 
> You're doing something wrong with git here. Why would you need to update 
> your cache?

Quite possibly. Without it, I was getting a dump of a bunch of SHAs. I'm pretty git-ignorant, I've been focusing on something else for the past couple weeks.

-- 
Mathematics is the supreme nostalgia of our time.
Previous: Bill DavidsenNext: Linus Torvalds
Message 40 of 116 in “Mercurial 0.3 vs git benchmarks”
  1. Matt MackallApr 26, 2005
  2. Daniel PhillipsApr 26, 2005
  3. Linus TorvaldsApr 26, 2005
  4. Mike TahtApr 26, 2005
  5. Linus TorvaldsApr 26, 2005
  6. Linus TorvaldsApr 26, 2005
  7. Chris MasonApr 26, 2005
  8. Magnus DammApr 26, 2005
  9. Chris MasonApr 26, 2005
  10. Magnus DammApr 26, 2005
  11. Chris MasonApr 26, 2005
  12. Andrew MortonApr 26, 2005
  13. Linus TorvaldsApr 26, 2005
  14. H. Peter AnvinApr 26, 2005
  15. Andrew MortonApr 26, 2005
  16. H. Peter AnvinApr 26, 2005
  17. Florian WeimerApr 27, 2005
  18. Thomas GlanzmannApr 27, 2005
  19. H. Peter AnvinApr 27, 2005
  20. Thomas GlanzmannApr 27, 2005
  21. Theodore Ts'oApr 27, 2005
  22. Thomas GlanzmannApr 27, 2005
  23. H. Peter AnvinApr 27, 2005
  24. Thomas GlanzmannApr 27, 2005
  25. Florian WeimerApr 27, 2005
  26. Florian WeimerApr 27, 2005
  27. H. Peter AnvinApr 27, 2005
  28. Florian WeimerApr 27, 2005
  29. Theodore Ts'oApr 27, 2005
  30. Theodore Ts'oApr 27, 2005
  31. Ingo MolnarApr 27, 2005
  32. Bill DavidsenApr 27, 2005
  33. Linus TorvaldsApr 27, 2005
  34. Linus TorvaldsApr 26, 2005
  35. Chris MasonApr 26, 2005
  36. Chris MasonApr 26, 2005
  37. H. Peter AnvinApr 26, 2005
  38. Bill DavidsenApr 26, 2005
  39. Bill DavidsenApr 26, 2005
  40. Matt MackallApr 26, 2005
  41. Linus TorvaldsApr 26, 2005
  42. Chris WedgwoodApr 26, 2005
  43. Andreas GalApr 26, 2005
  44. Linus TorvaldsApr 26, 2005
  45. Mercurial 0.4b vs git patchbomb benchmarkMatt Mackall, Apr 29, 2005
  46. SeanApr 29, 2005
  47. Matt MackallApr 29, 2005
  48. SeanApr 29, 2005
  49. Linus TorvaldsApr 29, 2005
  50. Morten WelinderApr 29, 2005
  51. Matt MackallApr 29, 2005
  52. Bill DavidsenMay 2, 2005
  53. SeanMay 2, 2005
  54. Linus TorvaldsMay 2, 2005
  55. Matt MackallMay 2, 2005
  56. Linus TorvaldsMay 2, 2005
  57. Matt MackallMay 3, 2005
  58. Linus TorvaldsMay 3, 2005
  59. Matt MackallMay 3, 2005
  60. Linus TorvaldsMay 3, 2005
  61. Linus TorvaldsMay 3, 2005
  62. Matt MackallMay 3, 2005
  63. Chris WedgwoodMay 3, 2005
  64. Tom LordApr 29, 2005
  65. Linus TorvaldsApr 29, 2005
  66. Tom LordApr 29, 2005
  67. Linus TorvaldsApr 29, 2005
  68. Tom LordApr 29, 2005
  69. SeanApr 29, 2005
  70. Tom LordApr 29, 2005
  71. SeanApr 29, 2005
  72. Tom LordApr 29, 2005
  73. Tom LordApr 29, 2005
  74. Noel MaddyApr 29, 2005
  75. Tom LordApr 29, 2005
  76. Andrew Timberlake-NewellApr 29, 2005
  77. Tom LordApr 29, 2005
  78. Andrew Timberlake-NewellApr 29, 2005
  79. Morgan SchweersApr 29, 2005
  80. Noel MaddyApr 29, 2005
  81. git network protocolDavid Lang, Apr 29, 2005
  82. Daniel BarkalowApr 29, 2005
  83. Tom LordApr 29, 2005
  84. Denys DuchierApr 29, 2005
  85. Signed commit vulnerabilities? (was: Mercurial 0.4b vs git patchbomb benchmark)Kevin Smith, Apr 29, 2005
  86. Bill DavidsenMay 2, 2005
  87. Matt MackallApr 29, 2005
  88. Linus TorvaldsApr 29, 2005
  89. Matt MackallApr 29, 2005
  90. Linus TorvaldsApr 29, 2005
  91. Matt MackallApr 29, 2005
  92. Linus TorvaldsApr 29, 2005
  93. Matt MackallApr 29, 2005
  94. Bill DavidsenApr 29, 2005
  95. Andrea ArcangeliApr 29, 2005
  96. Olivier GalibertApr 29, 2005
  97. Andrea ArcangeliApr 29, 2005
  98. Andrea ArcangeliApr 29, 2005
  99. Matt MackallApr 29, 2005
  100. Andrea ArcangeliApr 30, 2005
  101. Matt MackallApr 30, 2005
  102. Andrea ArcangeliApr 30, 2005
  103. Bill DavidsenMay 2, 2005
  104. valdis.kletnieks@vt.eduMay 2, 2005
  105. Bill DavidsenMay 3, 2005
  106. David A. WheelerMay 4, 2005
  107. Andrea ArcangeliMay 2, 2005
  108. Linus TorvaldsMay 2, 2005
  109. Daniel JacobowitzMay 2, 2005
  110. Linus TorvaldsMay 2, 2005
  111. Edgar ToernigMay 2, 2005
  112. Sam RavnborgMay 2, 2005
  113. Ryan AndersonMay 2, 2005
  114. Linus TorvaldsMay 2, 2005
  115. Kyle MoffettMay 2, 2005
  116. Bill DavidsenMay 3, 2005

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.