diff options
author | Jeff King <peff@peff.net> | 2016-01-18 15:02:52 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-01-19 09:55:01 -0800 |
commit | 4e1d1a2eea25878a2128e376bff8b4a1b2216b15 (patch) | |
tree | 476c4fe8c2ff49d26e57f5190294fd2c2a8cc2ed | |
parent | shortlog: replace hand-parsing of author with pretty-printer (diff) | |
download | tgif-4e1d1a2eea25878a2128e376bff8b4a1b2216b15.tar.xz |
shortlog: optimize "--summary" mode
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>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | builtin/shortlog.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/builtin/shortlog.c b/builtin/shortlog.c index 1261ec4dd0..973b50d417 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>"); |