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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.