Re: [PATCH v2 2/2] fetch: skip computing output width when not printing anything
From: Patrick Steinhardt <hidden>
Date: 2022-02-10 12:30:57
On Wed, Feb 09, 2022 at 07:10:38PM +0100, Christian Couder wrote:
On Wed, Feb 2, 2022 at 5:13 PM Patrick Steinhardt [off-list ref] wrote:quoted
Skip computing the summary width when the user asked for us to be quiet.There is a --quiet option for git fetch, so here we can expect that it will be used to test this speedup...quoted
This gives us a small speedup of nearly 10% when doing a dry-run mirror-fetch in a repository with thousands of references being updated: Benchmark 1: git fetch --prune --dry-run +refs/*:refs/* (HEAD~) Time (mean ± σ): 34.048 s ± 0.233 s [User: 30.739 s, System: 4.640 s] Range (min … max): 33.785 s … 34.296 s 5 runs Benchmark 2: git fetch --prune --dry-run +refs/*:refs/* (HEAD) Time (mean ± σ): 30.768 s ± 0.287 s [User: 27.534 s, System: 4.565 s] Range (min … max): 30.432 s … 31.181 s 5 runs Summary 'git fetch --prune --dry-run +refs/*:refs/* (HEAD)' ran 1.11 ± 0.01 times faster than 'git fetch --prune --dry-run +refs/*:refs/* (HEAD~)'...but --prune and --dry-run are used for testing. It would be nice if this discrepancy was explained a bit. Otherwise the commit message and code look good to me.
Yeah, I was hiding away the `--quiet` flag here by accident. I used
`--prune` and `--dry-run` to trigger more lines to be printed to console
and to not take into account the time it takes to update local refs and
fetch objects. But doing so without these flags also demonstrates what I
want to:
Benchmark 1: git fetch --quiet +refs/*:refs/* (pks-fetch-pack-optim-v1~)
Time (mean ± σ): 96.078 s ± 0.508 s [User: 91.378 s, System: 10.870 s]
Range (min … max): 95.449 s … 96.760 s 5 runs
Benchmark 2: git fetch --quiet +refs/*:refs/* (pks-fetch-pack-optim-v1)
Time (mean ± σ): 88.214 s ± 0.192 s [User: 83.274 s, System: 10.978 s]
Range (min … max): 87.998 s … 88.446 s 5 runs
So again, I'll update the commit message.
Thanks for your feedback!
Patrick Attachments
- signature.asc [application/pgp-signature] 833 bytes