Da Anonimo (non verificato) , 29 Aprile 2026

Vocabolario di performance

"Performance su scala" puo significare molte cose: tempo di clone/fetch, velocita log/blame, throughput commit, gestione dimensione working tree.

Clone e fetch

I pack file di Git usano compressione delta aggressiva. Mercurial usa file bundle con compressione simile.

Operazioni locali

# Benchmark: log on a million-commit repo
time git log --oneline | wc -l
time hg log --template '{rev}\n' | wc -l

Dimensione working tree

Entrambi i sistemi fanno aggiornamenti del file-tree camminando i tree.

Uso memoria

Il runtime Python di Mercurial impone un floor di memoria piu alto.

Storage repository

Entrambi usano storage content-addressed con compressione delta.

Operazioni concorrenti

L'index di Git usa lock di file.

Scaling lato server

I server Git (GitHub, GitLab, Gitea) ospitano routinamente repository con centinaia di migliaia di contributori.

Scala monorepo

Microsoft (Windows in Git via VFS for Git / Scalar) e Meta (Sapling) hanno affrontato lo stesso problema.

# Git with sparse checkout and partial clone
git clone --filter=blob:none --sparse https://example.com/monorepo.git
cd monorepo
git sparse-checkout init --cone
git sparse-checkout set apps/myapp shared/utils

# Mercurial with sparse and narrow
hg clone --narrow --include 'apps/myapp' --include 'shared/utils' \
  https://example.com/monorepo

Sapling e Scalar

Sapling di Meta e essenzialmente "Mercurial reimmaginato per i monorepo".

La conclusione pragmatica

A scala ordinaria, la performance non e un fattore decisivo.