Por Anónimo (no verificado) , 29 Abril 2026

Vocabulario de rendimiento

"Rendimiento a escala" puede significar muchas cosas: tiempo de clone, velocidad de log/blame, throughput de commits, manejo de tamaño del árbol de trabajo.

Clone y fetch

Los archivos pack de Git usan compresión delta agresiva. Mercurial usa archivos bundle con compresión similar.

Operaciones locales

Ambos sistemas realizan operaciones locales completamente desde disco. El núcleo Python puro de Mercurial fue históricamente más lento.

time git log --oneline | wc -l       # ~5-10 segundos
time hg log --template '{rev}\n' | wc -l  # ~10-20 segundos

Tamaño del árbol de trabajo

Ambos hacen actualizaciones del árbol de archivos caminando trees y aplicando cambios.

Uso de memoria

El runtime Python de Mercurial impone un piso de memoria más alto que el núcleo C de Git.

Almacenamiento del repositorio

Ambos usan almacenamiento direccionado por contenido con compresión delta.

Operaciones concurrentes

El índice de Git usa locks de archivo. Mercurial usa locking similar.

Escalado del lado servidor

Los servidores Git rutinariamente alojan repositorios con cientos de miles de contribuidores.

Escala de monorepo

Microsoft (Windows en Git vía VFS for Git / Scalar) y Meta (Sapling) enfrentaron el mismo problema.

# Git con sparse checkout y 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 con sparse y narrow
hg clone --narrow --include 'apps/myapp' --include 'shared/utils' \
  https://example.com/monorepo

Sapling y Scalar

Sapling de Meta es esencialmente "Mercurial reimaginado para monorepos".

La conclusión pragmática

A escala ordinaria, el rendimiento no es un factor decisivo.