Git est rapide. Tout le monde, même les utilisateurs les plus hardcore
des autres systèmes, donnent à Git ce titre. Comparé à SVN et Preforce,
cela vient du fait que toutes les opérations se font localement. Cependant,
même comparé aux autres DSCM, Git est vraiment rapide.
Une partie de l'origine de cette vitesse vient du fait que Git a été construit
pour travailler le source du noyau Linux, ce qui veut dire qu'il devait gérer efficacement
un large nombre de dépôt dès le premier jour.
Un autre raison est que Git est écrit en C, et encore une autre raison est que les
développeurs à l'origine de git sont, à mon expérience, très très soucieux de la rapidité
de leurs applications.
Voici quelques benchmarks que j'ai effectués sur 3 copies du dépôt des sources de Django
avec 3 SCM différents: Git, Mercurial et Bazaar. J'ai aussi testé quelques parties sur
SVN, mais croyez moi, c'est plus lent - en gros prenez les chiffres de Bazaar et ajoutez
le temps de latence du réseau...
Le résultat final est que pour toutes les commandes, à part l'ajout d'un fichier,
Git est le plus rapide. (Aussi pour les commit très larges, dans lequel Hg a des
résultat similaires, mais le commit que j'ai testé était tellement grand qu'il est
vraisemblable que vous tombiez sur ce genre de cas - les commit normaux sont plus rapides
avec Git)
|
Git |
Hg |
Bzr |
| Init |
0.024s |
0.059s |
0.600s |
| Add |
8.535s |
0.368s |
2.381s |
| Status |
0.451s |
1.946s |
14.744s |
| Diff |
0.543s |
2.189s |
14.248s |
| Tag |
0.056s |
1.201s |
1.892s |
| Log |
0.711s |
2.650s |
9.055s |
| Commit (Large) |
12.480s |
12.500s |
23.002s |
| Commit (Petit) |
0.086s |
0.517s |
1.139s |
| Branch (Froid) |
1.161s |
94.681s |
82.249s |
| Branch (Chaud) |
0.070s |
12.300s |
39.411s |
Les chiffres des branches à froid et à chaud sont les chiffres de la création
d'une première puis d'une seconde branche sur le dépôt - le second chiffre
étant une branche avec un cache disque déjà prêt.
Bien que les chiffres 'add' sont bien plus petit, c'était une opération d'ajout
massif - plus de 2000 fichiers. Pour la majorité des cas que les gens rencontrent
chaque jour, les opérations d'ajout ne prennent qu'une fraction de seconde. Toutes
les autres opérations testées ici (à part peut-être le l'énorme commit) sont plus
indicatifs des choses que vous serez amenés à faire au jour le jour.
Ces chiffres ne sont pas difficiles à reproduire, il vous suffit de cloner le projet Django
avec chaque système et d'essayer la même commande dans chacun.
git clone git://GitHub.com/brosner/django.git dj-git
hg clone http://hg.dpaste.com/django/trunk dj-hg
bzr branch lp:django dj-bzr
svn checkout http://code.djangoproject.com/svn/django/trunk dj-svn