From: Thomas Rast <trast@inf.ethz.ch>
To: Thomas Rast <trast@student.ethz.ch>
Cc: <git@vger.kernel.org>
Subject: Re: [PATCH 02/11] Introduce a performance test for git-rebase
Date: Mon, 12 Mar 2012 18:41:23 +0100 [thread overview]
Message-ID: <87ipi9yaws.fsf@thomas.inf.ethz.ch> (raw)
In-Reply-To: <e6a6af53264368a25e71719901f3227042e21f5c.1331561353.git.trast@student.ethz.ch> (Thomas Rast's message of "Mon, 12 Mar 2012 16:09:58 +0100")
Thomas Rast <trast@student.ethz.ch> writes:
> The perf framework lets the user run the test in an arbitrary repo,
> which makes writing a test for rebase a bit finicky. This one uses a
> perl script to determine a longest linear segment of history, that is,
> a range A..B which is completely linear. (For a full clone of
> git.git, this is the (whole) 'html' branch.) The number of commits
> that are rebased is capped at 50, however. That is, if A..B is more
> than 50 commits, it uses B~50..B instead.
>
> Having determined a suitable range, it then runs rebase with all
> combinations of rerere (on/off), -i / noninteractive, and -m / normal.
>
> Signed-off-by: Thomas Rast <trast@student.ethz.ch>
> ---
I forgot to put the interesting part here:
Test this tree
------------------------------------------------------
3400.4: rebase -f (rerere off) 4.64(2.12+1.80)
3400.5: rebase -m -f (rerere off) 4.17(2.07+1.53) to .4: -10% ***
3400.6: rebase -i -f (rerere off) 4.51(2.30+1.57) to .4: -3% *
3400.7: rebase -i -m -f (rerere off) 4.51(2.31+1.57)
------------------------------------------------------
Significance hints: '.' 0.1 '*' 0.05 '**' 0.01 '***' 0.001
I did the change/significance manually here, so I might have made a
mistake in the exact numbers.
However, it's pretty obvious that 'rebase -f' is slow compared to
'rebase -m'. So slow in fact that the user would be better off running
an *interactive* rebase.
So what's the advantage of not using -m? I always thought it was
because plain rebase was supposed to be *faster* than -m, and I
confirmed this in an extremely scientific test on #git-devel:
[09 Mar 14:05] <charon> hrm, what's the advantage of straight rebase over 'rebase -m' ?
[09 Mar 14:06] <mhagger> charon: It's supposed to be significantly faster
[09 Mar 14:06] <charon> mhagger: ah thanks, that's what i suspected
This wasn't always the case; back in v1.7.0 you would see this picture:
Test v1.7.0
---------------------------------------------------
3400.4: rebase -f (rerere off) 3.75(2.12+1.18)
3400.5: rebase -m -f (rerere off) 4.05(2.29+1.32) to .4: +8% ***
This comes from the i18n support added in adc3b2b27..a9f578685, and from
43c2325 (am: use get_author_ident_from_commit instead of mailinfo when
rebasing, 2010-06-16).
Now I'm not really keen on hacking on git-am until it gets back its
performance, as for most uses it's probably still fast enough. But I
think one important question is: can we get rid of the
git-format-patch|git-am mode of git-rebase, which has historically been
a source of pain (see, e.g., the aforementioned 43c2325)?
Ok, perhaps not: certain features like --whitespace depend on it :-(
--
Thomas Rast
trast@{inf,student}.ethz.ch
next prev parent reply other threads:[~2012-03-12 17:41 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-12 15:09 [PATCH 00/11] perf improvements past v1.7.10 Thomas Rast
2012-03-12 15:09 ` [PATCH 01/11] perf/aggregate: load Git.pm from the build tree Thomas Rast
2012-03-12 15:09 ` [PATCH 02/11] Introduce a performance test for git-rebase Thomas Rast
2012-03-12 17:41 ` Thomas Rast [this message]
2012-03-12 19:45 ` Junio C Hamano
2012-03-12 20:20 ` Thomas Rast
2012-03-12 20:59 ` Junio C Hamano
2012-03-12 15:09 ` [PATCH 03/11] Introduce a performance test for git-blame Thomas Rast
2012-03-12 15:10 ` [PATCH 04/11] perf: display average instead of minimum time Thomas Rast
2012-03-12 15:10 ` [PATCH 05/11] perf: suppress aggregation also in 'run' Thomas Rast
2012-03-12 15:10 ` [PATCH 06/11] perf: dereference to a commit when building Thomas Rast
2012-03-12 15:10 ` [PATCH 07/11] perf: convert realtime to seconds when collecting runs Thomas Rast
2012-03-12 15:10 ` [PATCH 08/11] perf/aggregate: optionally include a t-test score Thomas Rast
2012-03-12 15:10 ` [PATCH 09/11] perf/run: allow skipping some revisions Thomas Rast
2012-03-12 15:28 ` [PATCH 00/11] perf improvements past v1.7.10 Nguyen Thai Ngoc Duy
2012-03-12 16:35 ` Thomas Rast
2012-03-12 16:09 ` Jakub Narebski
2012-03-12 16:30 ` Thomas Rast
2012-03-12 16:27 ` [PATCH 10/11] perf: implement a test-selection feature Thomas Rast
2012-03-12 16:27 ` [PATCH 11/11] perf: add a bisection tool Thomas Rast
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=87ipi9yaws.fsf@thomas.inf.ethz.ch \
--to=trast@inf.ethz.ch \
--cc=git@vger.kernel.org \
--cc=trast@student.ethz.ch \
/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).