git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[QUESTION] Performance comparison: full clone + sparse-checkout vs partial clone + sparse-checkout

From
MKManoraj 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

Next: Manoraj K
Message 1 of 4 in “[QUESTION] Performance comparison: full clone + sparse-checkout vs partial clone + sparse-checkout”
  1. Manoraj KOct 28, 2024
  2. Manoraj KNov 7, 2024
  3. Elijah NewrenNov 8, 2024
  4. Manoraj KDec 6, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.