From: "SZEDER Gábor" <szeder.dev@gmail.com>
To: Derrick Stolee <stolee@gmail.com>
Cc: git@vger.kernel.org, Junio C Hamano <gitster@pobox.com>,
Thomas Rast <tr@thomasrast.ch>
Subject: Re: [RFC PATCH 0/5] line-log: towards a more responsive, incremental 'git log -L'
Date: Mon, 19 Aug 2019 15:03:23 +0200 [thread overview]
Message-ID: <20190819130323.GU20404@szeder.dev> (raw)
In-Reply-To: <a3f8b468-5ee5-4056-db67-bb8ba5390002@gmail.com>
On Mon, Aug 19, 2019 at 08:00:11AM -0400, Derrick Stolee wrote:
> On 8/18/2019 2:27 PM, SZEDER Gábor wrote:
> > Line-level log performs a preprocessing step in
> > prepare_revision_walk(), during which it filters and rewrites history
> > to keep only commits modifying the given line range. This
> > preprocessing causes significant delay before the first commit is
> > shown, wastes CPU time when the user asks only for a few commits, and
> > does parent rewriting with no way to turn it off.
> >
> > This patch series addresses these issues by integrating line-level log
> > filtering into the revision walking machinery and making it work
> > together with generation number-based topo-ordering (though for now
> > only in the case when the user doesn't explicitly asks for parent
> > rewriting, which is probably the common case).
> >
> > The first two patches are quite straightforward (and arguably somewhat
> > unrelated), but the rest deals with history traversal and parent
> > rewriting, which I don't usually do, hence the RFC.
>
> Hi Szeder,
>
> Thanks for sending this series! I'm particularly excited about it
> because we recently got a bug report from a user in the Windows OS
> repo about "git log -L" being very slow. I put it on the backlog [1]
> but haven't had time to investigate it myself. After we are done
> updating to v2.23.0 [2], I'll have time to test your changes on
> the Windows repo. I anticipate your change to provide a massive
> boost.
Well, it depends on what you mean by "boost"... As discussed in patch
4's commit message, this series doesn't really optimizes much, and the
total amount of work to be done remains the same, except that 'git log
-L... -<N>' will be able to return early. So when you benchmark it
with e.g. 'time git log -L... >/dev/null', then you won't see much
difference, as it will still take just about as looooong as before,
apart from the faster generation numbers-based topo-ordering. (But I
have a few WIP patches waiting to be cleaned up that might bring about
3-4x speedup in general.)
In the meantime, until these changes trickle into a Git release, for a
faster line-level log I would recommend to:
- Limit the revision range up front, i.e.:
git log -L... ^a-not-too-old-version
because this can greatly reduce the amount of commits that that
expensive preprocessing step has to churn through.
- Use '--no-renames'. Although it won't follow the evolution of the
line range over file renames, this might be an acceptable
compromise. (this is what those WIP patches are focusing on)
- Or both.
next prev parent reply other threads:[~2019-08-19 13:03 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-18 18:27 [RFC PATCH 0/5] line-log: towards a more responsive, incremental 'git log -L' SZEDER Gábor
2019-08-18 18:27 ` [RFC PATCH 1/5] completion: offer '--(no-)patch' among 'git log' options SZEDER Gábor
2019-08-18 18:27 ` [RFC PATCH 2/5] line-log: remove unused fields from 'struct line_log_data' SZEDER Gábor
2019-08-19 11:53 ` Derrick Stolee
2019-08-18 18:27 ` [RFC PATCH 3/5] t4211-line-log: add tests for parent oids SZEDER Gábor
2019-08-18 18:28 ` [RFC PATCH 4/5] line-log: more responsive, incremental 'git log -L' SZEDER Gábor
2019-08-19 12:34 ` SZEDER Gábor
2019-08-19 12:43 ` Derrick Stolee
2019-08-18 18:28 ` [RFC PATCH 5/5] line-log: try to use generation number-based topo-ordering SZEDER Gábor
2019-08-19 12:00 ` [RFC PATCH 0/5] line-log: towards a more responsive, incremental 'git log -L' Derrick Stolee
2019-08-19 13:03 ` SZEDER Gábor [this message]
2019-08-19 14:50 ` Derrick Stolee
2019-08-19 15:02 ` SZEDER Gábor
2019-08-19 16:12 ` Derrick Stolee
2019-08-21 11:07 ` SZEDER Gábor
2020-04-09 12:17 ` Derrick Stolee
2020-04-24 9:02 ` SZEDER Gábor
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=20190819130323.GU20404@szeder.dev \
--to=szeder.dev@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=stolee@gmail.com \
--cc=tr@thomasrast.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).