Due vittorie di parallelismo
Due impostazioni sbloccano speedup significativi per le operazioni quotidiane. core.preloadIndex parallelizza le chiamate lstat che git status fa; il checkout parallelo (Git 2.32+) parallelizza le scritture di file durante git checkout, git switch e git restore.
Preload index
git config core.preloadIndex true
Checkout parallelo
git config checkout.workers 0
git config checkout.thresholdForParallelism 100
Quando il checkout parallelo aiuta di piu
- Cambiare branch con migliaia di file diversi.
- Checkout iniziale dopo il clone.
- Ripristinare grandi insiemi di percorsi via
git restore. - Filesystem con apertura per file lenta.
Misurazione
time git -c checkout.workers=1 checkout main
time git -c checkout.workers=0 checkout main
GIT_TRACE2_PERF=1 git checkout big-branch 2>&1 | grep -i checkout
Caveat
Il checkout parallelo interagisce con i filtri smudge: i filtri girano sequenzialmente per file, ma piu file girano in parallelo.
Avvertenze filesystem
Su Windows, l'antivirus puo serializzare le creazioni di file.
Errori comuni
Disabilitare preloadIndex su dischi lenti — al contrario: il parallelismo nasconde la latenza.