From: Junio C Hamano <gitster@pobox.com>
To: Jeff King <peff@peff.net>
Cc: git@vger.kernel.org, Olaf Hering <olaf@aepfle.de>
Subject: Re: [PATCH] ref-filter: disable save_commit_buffer while traversing
Date: Mon, 11 Jul 2022 14:27:06 -0700 [thread overview]
Message-ID: <xmqqilo3mjbp.fsf@gitster.g> (raw)
In-Reply-To: <Ysw4JtoHW1vWmqhz@coredump.intra.peff.net> (Jeff King's message of "Mon, 11 Jul 2022 10:48:06 -0400")
Jeff King <peff@peff.net> writes:
> - Note that all of this assumes you don't have a commit-graph file. if
> you do, then the heap usage is even lower, and the runtime is 10x
> faster. So in that sense this is not urgent, as there's a much
> better solution. But since it's such an obvious and easy win for
> fallback cases (including commits which aren't yet in the graph
> file), there's no reason not to.
Sounds sensible.
> Signed-off-by: Jeff King <peff@peff.net>
> ---
> Just pulling this out of the discussion in:
>
> https://lore.kernel.org/git/YswuaPx6Mk7YkIim@coredump.intra.peff.net/
>
> as it's an easy win.
>
> I doubt that anyone even cares about restoring the value of
> save_commit_buffer. So this _could_ be a one-liner turning it off,
> rather than doing the save/restore dance. I was mostly erring on the
> conservative side, but maybe fewer lines of code is a worthwhile thing.
>
> ref-filter.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/ref-filter.c b/ref-filter.c
> index d3c90e5dbe..bdf39fa761 100644
> --- a/ref-filter.c
> +++ b/ref-filter.c
> @@ -2405,13 +2405,17 @@ static void reach_filter(struct ref_array *array,
> int filter_refs(struct ref_array *array, struct ref_filter *filter, unsigned int type)
> {
> struct ref_filter_cbdata ref_cbdata;
> + int save_commit_buffer_orig;
> int ret = 0;
>
> ref_cbdata.array = array;
> ref_cbdata.filter = filter;
>
> filter->kind = type & FILTER_REFS_KIND_MASK;
>
> + save_commit_buffer_orig = save_commit_buffer;
> + save_commit_buffer = 0;
> +
> init_contains_cache(&ref_cbdata.contains_cache);
> init_contains_cache(&ref_cbdata.no_contains_cache);
>
> @@ -2444,6 +2448,7 @@ int filter_refs(struct ref_array *array, struct ref_filter *filter, unsigned int
> reach_filter(array, filter->reachable_from, INCLUDE_REACHED);
> reach_filter(array, filter->unreachable_from, EXCLUDE_REACHED);
>
> + save_commit_buffer = save_commit_buffer_orig;
> return ret;
> }
prev parent reply other threads:[~2022-07-11 21:27 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-11 14:48 [PATCH] ref-filter: disable save_commit_buffer while traversing Jeff King
2022-07-11 15:12 ` Ævar Arnfjörð Bjarmason
2022-07-11 17:47 ` Jeff King
2022-07-11 21:27 ` Junio C Hamano [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqqilo3mjbp.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=olaf@aepfle.de \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.