Zwillingssterns Weltenwald
Published on Zwillingssterns Weltenwald (http://www.xn--drachentrnen-ocb.de)

Startseite > Mercurial vs. GIT, Leistungstest für lokale Operationen

Mercurial vs. GIT, Leistungstest für lokale Operationen

English: A speed test for Mercurial and git (in german). -> Links to other tests [1]. Update: I wrote a new test for use in server applications, since they are the only place where a difference of 30-60ms really matters: hg vs. git for server applications [2].

Ich habe ein paar Testsskripte geschrieben, um die lokale Leistung von Mercurial und GIT vergleichen zu können.

Update: Ich habe einen neuen Test für die Nutzung in Serverprogrammen geschrieben, weil dort der Unterschied um 30-60ms wirklich etwas ausmacht: hg vs. git for server applications [2].


Was ich wissen wollte ist, wie schnell die Systeme jeweils bei lokalen commits sind (andere Operationen prüfe ich noch nicht), und wie sich ihre Leistung ändert, wenn ich die Anzahl der Dateien oder die Art der Änderungen variiere.

Meine Anregung dafür war der Mercurial-vs-Bazaar [3] Test

Ich nutze selbst fast ausschließlich Mercurial, daher kann es sein, dass ich ein paar Optimierungsmöglichkeiten von git übersehen habe. Ich habe bei Mercurial allerdings auch keine genutzt.

Meine Skripte dazu sind alle in einem Mercurial repository im Netz verfügbar: - http://freehg.org/u/ArneBab/python_tests/

Die Testergebnisse genügen nicht wissenschaftlichen Standards, weil

  • Mein Rechner teilweise Last hatte, und
  • Ich keine Standardabweichung der Mittelwerte hier berechne, so dass nicht sicher ist, wie ungenau die Daten sind.

Bei den Tests war git in den meisten Fällen schneller als Mercurial, vor allem mit wenigen Dateien.

Bei vielen Dateien kam die Geschwindigkeit von Mercurial näher an git heran.

Die Tests, die ich gemacht habe sind:

  • init: Einfach nur ein Repository initialisieren
  • initial_commit: Ein Repository erstellen und die Dateien hinzufügen.
  • commit_after_append_small: Eine kurze Zeile anhängen (eine Fließkommazahl als String) und committen.
  • commit_after_append_of_many_lines: An jede Datei eine Anzahl Zeilen gleich der Anzahl von Dateien anhängen.
  • commit_after_append_of_one_long_line: An jede Datei eine Zeile anhängen, die für jede Datei 2 Fließkommazahlen enthält.

Bisher hat sich git in Tests mit 2 Dateien als um den Faktor 4 bis 5 schneller erwiesen.

Mit 200 Dateien war es noch um den Faktor 2.5 bis 4 schneller.

Gleichzeitig haben die Daten im Mercurial Ordner nur etwa halb so viel Platz eingenommen, wie in git (ohne repack).

Mit 2000 Dateien war git nur noch um den Faktor 2 bis 2,6 schneller. Das git repo hat dabei knapp 100 MiB belegt hat und das Mercurial repo nur knapp 80 MiB.

Struktur der Ergebnisse: = Für 2 Dateien =

init: - git: 0.01423661708831787 s - Mercurial: 0.13704051971435546 s

initial_commit: - git: 0.086095404624938962s - Mercurial: 0.32350056171417235 s

commit_after_append_small: - git: 0.084930634498596197 - Mercurial: 0.31660361289978028

commit_after_append_of_many_lines: - git: 0.086296844482421878 - Mercurial: 0.31294920444488528

commit_after_append_of_one_long_line: - git: 0.08749730587005615 - Mercurial: 0.32180678844451904

= Für 2000 Dateien =

[git, hg], time in seconds, mean value.

init [0.063668489456176758, 0.14365851879119873] - Factor: 2.25635192571

initial_commit [1.5152170658111572, 3.1502538919448853] - Factor: 2.07907762064

commit_after_append_small [1.4661256074905396, 3.7556029558181763] - Factor: 2.56158335727

commit_after_append_of_many_lines [16.113877415657043, 42.500172019004822] - Factor: 2.63748885031

commit_after_append_of_one_long_line [15.808947086334229, 38.482058048248291] - Factor: 2.43419487953

Anmerkungen:

  • Ein Problem von GIT ist, dass ich Repositories regelmäßig manuell packen muss. So wie ich mich kenne, würde ich das prinzipiell vergessen und mich dann wundern, warum meine Platte voll ist.
Werke von Arne Babenhauserheide. Lizensiert, wo nichts anderes steht, unter der GPLv3 or later und weiteren freien Lizenzen.

Diese Seite nutzt Cookies. Und Bilder. Manchmal auch Text. Eins davon muss ich wohl erwähnen — sagen die meisten anderen, und ich habe grade keine Zeit, Rechtstexte dazu zu lesen…


Source URL: http://www.xn--drachentrnen-ocb.de/deutsch/freie-software/licht/mercurial/hg-vs-git-local-operations-unscientific

Links:
[1] http://www.xn--drachentrnen-ocb.de/deutsch/freie-software/licht/dvcs-vergleiche-mercurial-git-bazaar-links
[2] http://draketo.de/proj/hg-vs-git-server/test-results.html
[3] http://www.xn--drachentrnen-ocb.de/deutsch/freie-software/licht/python/mercurial-vs-bazaar-link