From: Taylor Blau <me@ttaylorr.com>
To: John Cai via GitGitGadget <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org, "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>,
"John Cai" <johncai86@gmail.com>
Subject: Re: [PATCH v2] cat-file: skip expanding default format
Date: Tue, 8 Mar 2022 17:24:14 -0500 [thread overview]
Message-ID: <YifXjuN27U53c46c@nand.local> (raw)
In-Reply-To: <YifSFQ8zEZimCkHl@nand.local>
On Tue, Mar 08, 2022 at 05:00:53PM -0500, Taylor Blau wrote:
> On my copy of git.git., it shaves off around ~7ms that we're spending
> just copying type names back and forth.
...while we're at it, I think we could go a little further and avoid
doing the mark_query phase altogether, by doing something like:
--- 8< ---
diff --git a/builtin/cat-file.c b/builtin/cat-file.c
index ab9a49e13a..4b3cfb9e68 100644
--- a/builtin/cat-file.c
+++ b/builtin/cat-file.c
@@ -542,24 +542,30 @@ static int batch_objects(struct batch_options *opt)
int save_warning;
int retval = 0;
- /*
- * Expand once with our special mark_query flag, which will prime the
- * object_info to be handed to oid_object_info_extended for each
- * object.
- */
- memset(&data, 0, sizeof(data));
- data.mark_query = 1;
- strbuf_expand(&output,
- opt->format ? opt->format : DEFAULT_FORMAT,
- expand_format,
- &data);
- data.mark_query = 0;
- strbuf_release(&output);
if (opt->cmdmode)
data.split_on_whitespace = 1;
- if (opt->format && !strcmp(opt->format, DEFAULT_FORMAT))
+ memset(&data, 0, sizeof(data));
+ if (!opt->format || !strcmp(opt->format, DEFAULT_FORMAT)) {
+ data.info.sizep = &data.size;
+ data.info.typep = &data.type;
+
opt->format = NULL;
+ } else {
+ /*
+ * Expand once with our special mark_query flag, which will prime the
+ * object_info to be handed to oid_object_info_extended for each
+ * object.
+ */
+ data.mark_query = 1;
+ strbuf_expand(&output,
+ opt->format ? opt->format : DEFAULT_FORMAT,
+ expand_format,
+ &data);
+ data.mark_query = 0;
+ strbuf_release(&output);
+ }
+
/*
* If we are printing out the object, then always fill in the type,
* since we will want to decide whether or not to stream.
--- >8 ---
...but in my experiments it doesn't seem to help much. Or, at least, it
doesn't obviously help, there's too much noise from run to run for me to
see a worthwhile speed-up here.
Thanks,
Taylor
next prev parent reply other threads:[~2022-03-08 22:24 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-04 21:37 [PATCH] cat-file: skip expanding default format John Cai via GitGitGadget
2022-03-07 5:56 ` Junio C Hamano
2022-03-07 6:11 ` Junio C Hamano
2022-03-07 17:41 ` John Cai
2022-03-07 12:15 ` Ævar Arnfjörð Bjarmason
2022-03-08 2:54 ` [PATCH v2] " John Cai via GitGitGadget
2022-03-08 16:59 ` Junio C Hamano
2022-03-08 19:01 ` John Cai
2022-03-08 22:00 ` Taylor Blau
2022-03-08 22:06 ` John Cai
2022-03-08 22:24 ` Taylor Blau [this message]
2022-03-08 22:45 ` John Cai
2022-03-08 22:08 ` [PATCH v3] " John Cai via GitGitGadget
2022-03-08 22:30 ` Taylor Blau
2022-03-08 23:09 ` John Cai
2022-03-08 23:34 ` John Cai
2022-03-15 2:40 ` [PATCH v4] " John Cai via GitGitGadget
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=YifXjuN27U53c46c@nand.local \
--to=me@ttaylorr.com \
--cc=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--cc=johncai86@gmail.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).