Re: [PATCH 2/2] for-each-ref: add --count-matches option
- From
Derrick Stolee <derrickstolee@github.com>
- Date
- Jul 10, 2023, 16:51 UTC
- Message-ID
- <4715a469-8c68-8dcc-0254-9b7b857c3722@github.com>
- In-Reply-To
- <20230627073007.GD1226768@coredump.intra.peff.net>
On 6/27/2023 1:30 AM, Jeff King wrote:
Show 21 quoted lines
>On Mon, Jun 26, 2023 at 03:09:57PM +0000, Derrick Stolee via GitGitGadget wrote: > >>+for pattern in "refs/heads/" "refs/tags/" "refs/remotes" >>+do >>+ test_perf "count $pattern: git for-each-ref | wc -l" " >>+ git for-each-ref $pattern | wc -l >>+ " >>+ >>+ test_perf "count $pattern: git for-each-ref --count-match" " >>+ git for-each-ref --count-matches $pattern >>+ " >>+done > >I don't think this is a very realistic perf test, because for-each-ref >is doing a bunch of work to generate its default format, only to have >"wc" throw most of it away. Doing: > > git for-each-ref --format='%(refname)' | wc -l > >is much better (obviously you have to remember to do that if you care >about optimizing your command, but that's true of --count-matches, too).
Thank you for pointing this out! I'll be sure to modify the test and the analysis about it. The other check I need to compare is when multiple refspecs are provided at the same time, which I do believe still is a valuable thing to combine into a single process instead of multiple pipes to 'wc'. Did you have any thoughts on whether or not this works as an option in 'git for-each-ref' or would be better broken into a new builtin? Thanks, -Stolee