From: "Peter Eriksen" <s022018@student.dtu.dk>
To: Git Mailing List <git@vger.kernel.org>
Subject: Re: [PATCH] read-tree --aggressive
Date: Sat, 4 Feb 2006 12:52:01 +0100 [thread overview]
Message-ID: <20060204115201.GA22333@ebar091.ebar.dtu.dk> (raw)
In-Reply-To: <7v8xsr60n2.fsf@assigned-by-dhcp.cox.net>
On Fri, Feb 03, 2006 at 11:31:13PM -0800, Junio C Hamano wrote:
> "Peter Eriksen" <s022018@student.dtu.dk> writes:
>
> > In connection with Ian Molton's question about merge have I played a
> > little with 'git merge' on the kernel sources. What I find is that a
> > merge can take quite some time, but I'm not sure where that time exactly
> > goes to. Here are the times I got:
> >
> > Recursive (default): 4m22.282s
> > Resolve (-s resolve): 3m23.548s
>
> In your sample script, you do not disable the post-merge diff,
> which is typically one of the most expensive part in the whole
> merge, and I am wondering how fast a machine you are using to
> get 4 minutes. The post-merge diff is generated by piping the
> output of 'diff-tree -M' to 'apply --stat --summary', and that
> step alone takes about 12 minutes wallclock time on my box X-<.
>
> Since my box is not as fast as yours, I've eliminated the
> post-merge diff step and tried your final merge step like this:
>
> $ time git merge --no-summary -s resolve \
> 'Merging happily' HEAD v2.6.15 >/dev/null
>
> and got this:
>
> real 2m15.737s
> user 1m43.320s
> sys 0m26.690s
I got this:
real 0m51.661s
user 0m28.302s
sys 0m8.949s
> With the attached patch, the most expensive part, which is the
> repeated invocation of git-merge-one-file to remove many deleted
> paths, is eliminated. The result is this.
>
> real 0m20.311s
> user 0m15.780s
> sys 0m4.150s
I got this:
real 0m20.221s
user 0m6.456s
sys 0m1.828s
> This patch would not help recursive strategy, though. Calling
> read-tree with --aggressive flag essentially disables the
> benefit we would expect to get from it -- rename detection.
Aha, so now I better understand where all the time goes. Most of the
time is spend calculating the merge summary. After that the bottleneck
was the large amount of git-merge-one-file invocations.
With the aggressive patch applied it feels like the merge is mostly IO
bound, which might explain why we get similar running times. I did get
one run of 12s, but that was a lucky shot I guess. Repeated runs gave
between 15s and 21s but most where close to 20s.
Thanks,
Peter
next prev parent reply other threads:[~2006-02-04 12:13 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-01-31 21:33 Bottlenecks in git merge Peter Eriksen
2006-01-31 23:06 ` Junio C Hamano
2006-01-31 23:35 ` Petr Baudis
2006-02-01 0:43 ` Junio C Hamano
2006-01-31 23:45 ` Linus Torvalds
2006-02-01 0:50 ` Petr Baudis
2006-02-01 1:04 ` Linus Torvalds
2006-01-31 23:27 ` Petr Baudis
2006-02-04 7:31 ` [PATCH] read-tree --aggressive Junio C Hamano
2006-02-04 11:52 ` Peter Eriksen [this message]
2006-02-04 12:56 ` 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=20060204115201.GA22333@ebar091.ebar.dtu.dk \
--to=s022018@student.dtu.dk \
--cc=git@vger.kernel.org \
/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).