Ponieważ mój wpis o gitcie wywołał małą burzę (jak ja żem śmiem twierdzić, że git jest najlepszy, a wszystko co napisane w Pythonie jest wolniejsze?), więc wzorując się na stronie Why Git is Better than X, postanowiłem zrobić swoje małe porównanie szybkości trzech DVCS (git, Mercurial i Bazaar) odnośnie szybkości działania. Do tego celu wykorzystałem kod Django
Na pierwszy ogień poszło założenie repozytorium:
| git | hg | bzr |
|---|---|---|
| 0.004s | 0.052s | 0.276s |

Teraz trzeba dodać do naszego repozytorium nowe pliki:
| git | hg | bzr |
|---|---|---|
| 0.713s | 0.175s | 0.639s |

Oraz scommitować zmiany (z racji nowego repo jest to dużo zmian
):
| git | hg | bzr |
|---|---|---|
| 0.261s | 1.862s | 2.478s |
.png)
W przypadku małych zmian (w czasie edycji kodu) czas commitowania przedstawia się tak:
| git | hg | bzr |
|---|---|---|
| 0.037s | 0.190s | 0.485s |
.png)
A ile nam zajmie tagowanie commitu?
| git | hg | bzr |
|---|---|---|
| 0.003s | 0.136s | 0.112s |

Ile zmarnujemy z naszego życia, jeżeli zechcemy wygenerować logi:
| git | hg | bzr |
|---|---|---|
| 0.007s | 0.044s | 0.114s |

Albo chcemy obejrzeć różnice między commitami:
| git | hg | bzr |
|---|---|---|
| 0.019s | 0.101s | 0.290s |

W końcu grzechem by było nie stworzyć branchy:
| git | hg | bzr |
|---|---|---|
| 0.003s | 0.044s | 1.356s |

Wielkość repozytoriów też się różni. Im więcej gałęzi i commitów tym proporcjonalnie repozytorium gita jest coraz mniejsze. Dalej jest Mercurial a na końcu Bazaar. Co ciekawe, na samym początku sytuacja ma się dokładnie odwrotnie. Zastanawiające może być dlaczego git w przypadku dużego commitu pracował tak wolno (chociaż i tak zostało to poprawione w stosunku do testu z Why Git is Better than X. Jednak było to przeprowadzone na najnowszym kodzie Django, gdzie jest bardzo plików (ponad dwa tysiące). Taką operację będziemy wykonywać raz (albo wcale) dla danego zbioru kodu.
Co mi się podobało podczas robienia testów, to fakt, że git i Mercurial składniowo są bardzo do siebie podobne. Więc jeżeli z jakiegoś powodu potrzebujesz DVCS a nie ma na tej platformie gita (ew. jego wydajność nie jest zadowalająca), wybierz Mercuriala.




polski