git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, Eric Sunshine <sunshine@sunshineco.com>
Subject: [PATCH 4/6] shortlog: optimize "--summary" mode
Date: Mon, 18 Jan 2016 15:02:52 -0500	[thread overview]
Message-ID: <20160118200251.GD15836@sigill.intra.peff.net> (raw)
In-Reply-To: <20160118200136.GA9514@sigill.intra.peff.net>

If the user asked us only to show counts for each author,
rather than the individual summary lines, then there is no
point in us generating the summaries only to throw them
away. With this patch, I measured the following speedup for
"git shortlog -ns HEAD" on linux.git (best-of-five):

  [before]
  real    0m5.644s
  user    0m5.472s
  sys     0m0.176s

  [after]
  real    0m5.257s
  user    0m5.104s
  sys     0m0.156s

That's only ~7%, but it's so easy to do, there's no good
reason not to. We don't have to touch any downstream code,
since we already fill in the magic string "<none>" to handle
commits without a message.

Signed-off-by: Jeff King <peff@peff.net>
---
 builtin/shortlog.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/builtin/shortlog.c b/builtin/shortlog.c
index 1261ec4..973b50d 100644
--- a/builtin/shortlog.c
+++ b/builtin/shortlog.c
@@ -132,10 +132,12 @@ void shortlog_add_commit(struct shortlog *log, struct commit *commit)
 		goto out;
 	}
 
-	if (log->user_format)
-		pretty_print_commit(&ctx, commit, &oneline);
-	else
-		format_commit_message(commit, "%s", &oneline, &ctx);
+	if (!log->summary) {
+		if (log->user_format)
+			pretty_print_commit(&ctx, commit, &oneline);
+		else
+			format_commit_message(commit, "%s", &oneline, &ctx);
+	}
 
 	insert_one_record(log, author.buf, oneline.len ? oneline.buf : "<none>");
 
-- 
2.7.0.248.g5eafd77

  parent reply	other threads:[~2016-01-18 20:02 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-15 17:06 [PATCH 0/6] shortlog fixes and optimizations Jeff King
2016-01-15 17:08 ` [PATCH 1/6] shortlog: match both "Author:" and "author" on stdin Jeff King
2016-01-15 23:19   ` Eric Sunshine
2016-01-18 19:27     ` Jeff King
2016-01-18 19:26   ` Jeff King
2016-01-18 19:55     ` Junio C Hamano
2016-01-18 20:01       ` [PATCH v2 0/6] shortlog fixes and optimizations Jeff King
2016-01-18 20:02         ` [PATCH 1/6] shortlog: match both "Author:" and "author" on stdin Jeff King
2016-01-18 20:02         ` [PATCH 2/6] shortlog: use strbufs to read from stdin Jeff King
2016-01-18 20:02         ` [PATCH 3/6] shortlog: replace hand-parsing of author with pretty-printer Jeff King
2016-01-18 20:13           ` Jeff King
2016-01-18 23:04             ` Jeff King
2016-01-19  3:47               ` Junio C Hamano
2016-01-18 20:02         ` Jeff King [this message]
2016-01-18 20:02         ` [PATCH 5/6] shortlog: optimize out useless "<none>" normalization Jeff King
2016-01-18 20:02         ` [PATCH 6/6] shortlog: optimize out useless string list Jeff King
2016-01-15 17:08 ` [PATCH 2/6] shortlog: use strbufs to read from stdin Jeff King
2016-01-15 17:09 ` [PATCH 3/6] shortlog: replace hand-parsing of author with pretty-printer Jeff King
2016-01-15 17:09 ` [PATCH 4/6] shortlog: optimize "--summary" mode Jeff King
2016-01-15 17:10 ` [PATCH 5/6] shortlog: optimize out useless "<none>" normalization Jeff King
2016-01-15 17:10 ` [PATCH 6/6] shortlog: optimize out useless string list Jeff King
2016-01-15 22:11 ` [PATCH 0/6] shortlog fixes and optimizations Junio C Hamano

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=20160118200251.GD15836@sigill.intra.peff.net \
    --to=peff@peff.net \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=sunshine@sunshineco.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).