Dlaczego git jest lepszy?

Matthew @ 2009-06-29 — Kategorie: git, Programowanie, Techblog

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

dvcs - init

Teraz trzeba dodać do naszego repozytorium nowe pliki:

git hg bzr
0.713s 0.175s 0.639s

dvcs - add

Oraz scommitować zmiany (z racji nowego repo jest to dużo zmian ;)):

git hg bzr
0.261s 1.862s 2.478s

dvcs - commit (large)

W przypadku małych zmian (w czasie edycji kodu) czas commitowania przedstawia się tak:

git hg bzr
0.037s 0.190s 0.485s

dvcs - commit (small)

A ile nam zajmie tagowanie commitu?

git hg bzr
0.003s 0.136s 0.112s

dvcs - tag

Ile zmarnujemy z naszego życia, jeżeli zechcemy wygenerować logi:

git hg bzr
0.007s 0.044s 0.114s

dvcs - log

Albo chcemy obejrzeć różnice między commitami:

git hg bzr
0.019s 0.101s 0.290s

dvcs - diff

W końcu grzechem by było nie stworzyć branchy:

git hg bzr
0.003s 0.044s 1.356s

dvcs - branch

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.

Dodaj komentarz:

 

Subscribe without commenting