git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: pack-object's try_delta fast path for v2 trees?

From
Duy Nguyen <pclouds@gmail.com>
Date
Oct 15, 2013, 00:49 UTC
Message-ID
<CACsJy8DgjCR+B+Bvbydns=bCZP5=TU1avPinnuDKqLZXS=4LNQ@mail.gmail.com>
In-Reply-To
<20131015001926.GC10415@sigill.intra.peff.net>
On Tue, Oct 15, 2013 at 7:19 AM, Jeff King <peff@peff.net> wrote:
Show 23 quoted lines
> On Sat, Oct 12, 2013 at 10:42:17AM +0700, Nguyen Thai Ngoc Duy wrote:
>
>> Just wondering if this has been considered and dropped before.
>> Currently we use try_delta() for every object including trees. But
>> trees are special. All tree entries must be unique and sorted. That
>> helps simplify diff algorithm, as demonstrated by diff_tree() and
>> pv4_encode_tree(). A quick and dirty test with test-delta shows that
>> tree_diff only needs half the time of diff_delta(). As trees account
>> for like half the objects in a repo, speeding up delta search might
>> help performance, I think.
>
> No, as far as I know, it is a novel idea. When we were discussing commit
> caching a while back, Shawn suggested slicing trees on boundaries and
> store delta instructions that were pure "change this entry", "add this
> entry", and "delete this entry" chunks. The deltas might end up a little
> bigger, but if the reader knew the writer had sliced in this way, it
> could get a packv4-style cheap tree-diff, while remaining backwards
> compatible with implementations that just blindly reassemble the buffer
> from delta instructions.
>
> I didn't get far enough to try it, but doing what you propose would be
> the first step. Now that packv4 is more of a reality, it may not be
> worth pursuing, though.

I see this as pack-objects peformance improvements only. If we could make pack-objects run like 10% faster (even only with -adf), then it may be worth trying. The 10% is a total guess though as I haven't checked how much time we spend in searching deltas.

-- 
Duy
Previous: Jeff KingNext: Jeff King
Message 4 of 8 in “pack-object's try_delta fast path for v2 trees?”
  1. Duy NguyenOct 12, 2013
  2. Nicolas PitreOct 12, 2013
  3. Jeff KingOct 15, 2013
  4. Duy NguyenOct 15, 2013
  5. Jeff KingOct 15, 2013
  6. Nicolas PitreOct 15, 2013
  7. Jeff KingOct 15, 2013
  8. Nicolas PitreOct 15, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.