Mercurial vs. Bazaar speedtest clone and log - update: 4 runs with different versions

Some folks in #mercurial @ just repeated the tests, so we have now a bit more stable data.

The evaluation shows the following:

  1. Initial clone: hg is about 4.4 times faster (about 2 min vs. 6 to 15 min)
  2. Repository sizes: the hg repo is about 1.92 smaller (~113M vs. 215M)
  3. Time for a full log: hg is about 2.36 times faster (~21s vs. ~50s)
  4. Time for annotating Misc/NEWS: hg is 1.5 times slower than bzr.
    Without the result from bzr-1.6.1 it is 2.6 times slower (~43s vs 17s).
  5. Integrity checking: hg is by several orders of magnitude faster than bzr which just took too long - everyone stopped it after varying time (30s to 17 min), because the output spoke of hours remaining, one had an integrity error. hg needed about 1 min.
  6. Local clone: hg is 11 times faster (39s vs. 7.14 min).
    Without the 1m15 result from the high disk load host it is 16 times faster (26s).
  7. Local clone with hot filesystem: hg is 14.9 times faster (26s vs. 6.5 min).
  8. Hot copy of just .bzr / .hg: The speeds are about equal, so the difference doesn't come from raw filesystem speed (2s).
  9. Additional Bazaar tests to check shared repository cloning performance (you only get this when you use a shared repository and only clone that shared repository): With shared repository and hardlinks bzr only needs about 5 seconds for cloning.

So Mercurial is faster than Bazaar for the initial cloning and for free cloning (Bazaar takes almost 10 mintes for the initial clone while Mercurial finishes after just 2 minutes), while Bazaar is faster when cloning in a shared repository.

Also Mercurial is more than 2 times as fast as Bazaar in generating the log, while Bazaar is faster at annotating.

Additionally Mercurial consumes about half as much diskspace as Bazaar.

The biggest difference is in integrity checking, though, where all testers stopped Bazaar after up to 17min, since it didn't even check a fraction of the repository in that time. Mercurial on the other hand finished after just one minute.


Wählen Sie hier Ihre bevorzugte Anzeigeart für Kommentare und klicken Sie auf „Einstellungen speichern“ um die Änderungen zu übernehmen.

It would be useful to add a

It would be useful to add a test for fetching updates.
For example you clone the Python repository up to (tip - N revisions), with say N = 20, then you measure the time taken by "hg pull" to fetch the remaining revisions. It is something important in daily work.
(I have been pleasantly surprised that "hg pull" is faster than "svn up" on the same code base, even if "svn up" only pulls the latest revision and not all the intermediate ones)

Good idea!

When I revise the test at some time (will take a bit, since the test itself takes hours), I'll try to find a way to efficiently add that in (hg serve will be great here :) ).

Many thanks!


Unpolitisch sein
heißt politisch sein
ohne es zu merken
- Arne Babenhauserheide

Inhalt abgleichen
Willkommen im Weltenwald!

Beliebte Inhalte news