From: Johan Herland <johan@herland.net>
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Cc: git@vger.kernel.org, Junio C Hamano <gitster@pobox.com>,
"Shawn O. Pearce" <spearce@spearce.org>,
trast@student.ethz.ch, tavestbo@trolltech.com,
git@drmicha.warpmail.net, chriscool@tuxfamily.org
Subject: Re: [PATCHv4 08/12] Teach the notes lookup code to parse notes trees with various fanout schemes
Date: Fri, 28 Aug 2009 16:15:48 +0200 [thread overview]
Message-ID: <200908281615.49465.johan@herland.net> (raw)
In-Reply-To: <alpine.DEB.1.00.0908281349270.7434@intel-tinevez-2-302>
On Friday 28 August 2009, Johannes Schindelin wrote:
> On Fri, 28 Aug 2009, Johan Herland wrote:
> > On Friday 28 August 2009, Johannes Schindelin wrote:
> > > And I can easily imagine a repository that has a daily note
> > > generated by an automatic build, and no other notes. The
> > > date-based fan-out just wastes our time here, and even hurts
> > > performance.
> >
> > What about a month-based fanout?
>
> Well, I hoped to convince you that the date-based approach is too
> rigid. You basically cannot adapt the optimal data layout to the
> available data.
>
> (I like to think of this issue as related to storing deltas: we let
> Git choose relatively freely what to delta against, and do not force
> a delta against the parent commit like others do; I think it is
> pretty obvious that our approach is more powerful.)
>
> So the simplest (yet powerful-enough) way I could imagine is to teach
> the reading part to accept any fan-out (but that fan-out is really
> only based on the object name, nothing else), and to adjust the
> writing/merging part such that it has a maximum bin size (i.e. it
> starts a new fan-out whenever a tree object contains more than a
> config-specifyable limit).
I agree with your points on flexibility and not nailing down a structure
that might prove too rigid in the future.
But it seems the date-based approach might offer wins that an
object-name-based approach (flexible or not) simply cannot hope to
match...
Also a rigid organization (with unique note locations) makes the
implementation simpler and faster: If you allow notes for a given
commit at several places in the notes tree (and require the result to
be the concatenation of those notes, which seems to be the saner
choice), the lookup procedure must keep looking even after it has found
the first match. This affects both runtime and memory consumption
negatively (more subtrees must be unpacked, etc.)
I guess I'll code up both alternatives so that we can get some actual
numbers...
...Johan
--
Johan Herland, <johan@herland.net>
www.herland.net
next prev parent reply other threads:[~2009-08-28 14:17 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-27 1:43 [PATCHv4 00/12] git notes Johan Herland
2009-08-27 1:43 ` [PATCHv4 01/12] Introduce commit notes Johan Herland
2009-08-27 1:43 ` [PATCHv4 02/12] Add a script to edit/inspect notes Johan Herland
2009-08-27 1:43 ` [PATCHv4 03/12] Speed up git notes lookup Johan Herland
2009-08-27 1:43 ` [PATCHv4 04/12] Add an expensive test for git-notes Johan Herland
2009-08-27 1:43 ` [PATCHv4 05/12] Teach "-m <msg>" and "-F <file>" to "git notes edit" Johan Herland
2009-08-27 1:43 ` [PATCHv4 06/12] fast-import: Add support for importing commit notes Johan Herland
2009-08-27 1:43 ` [PATCHv4 07/12] t3302-notes-index-expensive: Speed up create_repo() Johan Herland
2009-08-27 1:43 ` [PATCHv4 08/12] Teach the notes lookup code to parse notes trees with various fanout schemes Johan Herland
2009-08-27 5:00 ` Junio C Hamano
2009-08-27 9:35 ` Johan Herland
2009-08-27 10:47 ` Johannes Schindelin
2009-08-27 20:58 ` Junio C Hamano
2009-08-28 8:48 ` Johannes Schindelin
2009-08-27 20:55 ` Junio C Hamano
2009-08-27 21:27 ` Shawn O. Pearce
2009-08-27 21:50 ` Junio C Hamano
2009-08-27 23:03 ` Johan Herland
2009-08-27 23:39 ` Jeff King
2009-08-28 0:30 ` Junio C Hamano
2009-08-28 0:40 ` Sverre Rabbelier
2009-08-28 1:43 ` Junio C Hamano
2009-08-28 2:51 ` Sverre Rabbelier
2009-08-28 3:02 ` Junio C Hamano
2009-08-28 3:05 ` Sverre Rabbelier
2009-08-28 3:35 ` Junio C Hamano
2009-08-28 8:51 ` Johannes Schindelin
2009-08-28 10:40 ` Johan Herland
2009-08-28 11:56 ` Johannes Schindelin
2009-08-28 14:15 ` Johan Herland [this message]
2009-08-27 10:42 ` Johannes Schindelin
2009-08-27 1:43 ` [PATCHv4 09/12] Selftests verifying semantics when loading notes trees with various fanouts Johan Herland
2009-08-27 1:43 ` [PATCHv4 10/12] notes.c: Implement simple memory pooling of leaf nodes Johan Herland
2009-08-27 7:39 ` Alex Riesen
2009-08-27 9:49 ` Johan Herland
2009-08-27 22:43 ` Johan Herland
2009-08-27 1:43 ` [PATCHv4 11/12] Add flags to get_commit_notes() to control the format of the note string Johan Herland
2009-08-27 1:43 ` [PATCHv4 12/12] Add '%N'-format for pretty-printing commit notes Johan Herland
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=200908281615.49465.johan@herland.net \
--to=johan@herland.net \
--cc=Johannes.Schindelin@gmx.de \
--cc=chriscool@tuxfamily.org \
--cc=git@drmicha.warpmail.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=spearce@spearce.org \
--cc=tavestbo@trolltech.com \
--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).