[QUESTION] Performance comparison: full clone + sparse-checkout vs partial clone + sparse-checkout
- From
- Manoraj K <mkenchugonde@atlassian.com>
- Date
- Oct 28, 2024, 10:30 UTC
- Message-ID
- <CACfndskJZyOf2k2JHVo=8C6+RE3nUdMF5my3t_qcL1+3dW26og@mail.gmail.com>
Hi,
We've conducted benchmarks comparing Git operations between a fully cloned and partially cloned repository (both using sparse-checkout). We'd like to understand the technical reasons behind the consistent performance gains we're seeing in the partial clone setup.
Benchmark Results:
Full Clone + Sparse-checkout: - .git size: 8.5G - Git index size: 20MB - Pack objects: 18,761,646 - Operations (mean ± std dev): * git status: 0.634s ± 0.004s * git commit: 2.677s ± 0.019s * git checkout branch: 0.615s ± 0.005s * git pull (no changes): 5.983s ± 0.391s
Partial Clone + Sparse-checkout: - .git size: 2.0G - Git index size: 20MB - Pack objects: 13,560,436 - Operations (mean ± std dev): * git status: 0.575s ± 0.012s (9.3% faster) * git commit: 2.164s ± 0.032s (19.2% faster) * git checkout branch: 0.724s ± 0.154s * git pull (no changes): 1.866s ± 0.018s (68.8% faster)
Key Questions: 1. What are the technical factors causing these performance improvements in the partial clone setup? 2. To be able to get these benefits, is there a way to convert our existing fully cloned repository to behave like a partial clone without re-cloning from scratch?
Appreciate any insights here.
Best regards, Manoraj K