From: "Alex Riesen" <raa.lkml@gmail.com>
To: "Junio C Hamano" <junkio@cox.net>
Cc: git@vger.kernel.org
Subject: Re: cygwin, 44k files: how to commit only index?
Date: Fri, 8 Dec 2006 08:27:08 +0100 [thread overview]
Message-ID: <81b0412b0612072327x77477584jb9131b26b0854f2@mail.gmail.com> (raw)
In-Reply-To: <7vzm9ynahc.fsf@assigned-by-dhcp.cox.net>
On 12/8/06, Junio C Hamano <junkio@cox.net> wrote:
> > yes, except that it'll compare the whole trees. Could I make it stop
> > at first mismatch? "-q|--quiet" for git-diff-index perhaps?
> > It's just not only stat, but also, open, read, mmap (yes, I try to use
> > it for packs) and close are really slow here as well.
>
> That sounds like optimizing for a wrong case -- you expect the
> index to match HEAD and trying to catch mistakes by detecting
> a mismatch, right?
I expect the index to differ from HEAD. The test is to avoid the mistake
of doing an empty commit.
> Having said that, I should point out that it is a low hanging
> fruit to optimize "diff-index --cached" for cases where index
> is expected to mostly match HEAD.
>
> The current code for "diff-index --cached" reads the whole tree
> into the index as stage #1 entries (diff-lib.c::run_diff_index),
> and then compares stage #0 (from the original index contents)
> and stage #1 (the tree parameter from the command line). Even
> if you stop at the first mismatch, you would already have paid
> the overhead to open and read all tree objects before even
> starting the comparison.
But I don't have to pay for the overhead of comparing all
entries, if I can stop at first mismatch and exit with non-0.
I think it'd make a difference (at least some difference).
But, if we could avoid loading of the entries which
will be never compared anyway, the speedup will be
of course more substantial...
> In 'pu' (jc/diff topic), I have a very generic code to walk the
> index, working tree and zero or more trees in parallel, taking
> advantage of cache-tree. If somebody is interested to learn the
> internals of git, some of the code could be lifted from there
> and simplified to walk just the index and a single tree, and I
> think that would optimize "diff-index --cached" quite a bit.
next prev parent reply other threads:[~2006-12-08 7:27 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-12-07 14:27 cygwin, 44k files: how to commit only index? Alex Riesen
2006-12-07 19:16 ` Junio C Hamano
2006-12-07 19:26 ` Shawn Pearce
2006-12-07 19:35 ` Shawn Pearce
2006-12-07 21:26 ` Christian MICHON
2006-12-09 8:27 ` Torgil Svensson
2006-12-07 19:57 ` Junio C Hamano
2006-12-07 20:29 ` Shawn Pearce
2006-12-07 21:53 ` Junio C Hamano
2006-12-07 22:15 ` Alex Riesen
2006-12-07 22:29 ` Junio C Hamano
2006-12-08 5:27 ` Alex Riesen
2006-12-08 6:54 ` Junio C Hamano
2006-12-08 7:27 ` Alex Riesen [this message]
2006-12-08 7:36 ` Junio C Hamano
2006-12-08 7:48 ` Alex Riesen
2006-12-08 8:43 ` Alex Riesen
2006-12-08 14:16 ` Alex Riesen
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=81b0412b0612072327x77477584jb9131b26b0854f2@mail.gmail.com \
--to=raa.lkml@gmail.com \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
/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).