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

Re: [PATCH] improve depth heuristic for maximum delta size

From
Junio C Hamano <junkio@cox.net>
Date
May 16, 2006, 23:34 UTC
Message-ID
<7vmzdh35ni.fsf@assigned-by-dhcp.cox.net>
In-Reply-To
<Pine.LNX.4.64.0605161510200.18071@localhost.localdomain>
Nicolas Pitre <nico@cam.org> writes:
> This provides a linear decrement on the penalty related to delta depth
> instead of being an 1/x function.  With this another 5% reduction is 
> observed on packs for both the GIT repo and the Linux kernel repo, as 
> well as fixing a pack size regression in another sample repo I have.

Good job, and it does not seem to spend too many more cycles either (it does slow it down a bit because it needs to do more deltas, but that is to be expected).

Here is the average chain length and resulting pack size from full repacking of git.git repository, with three versions.

        Avg 6.20   6516kB (master)
        Avg 5.97   5784kB (next, has 1/x version)
        Avg 6.89   5536kB (this patch on top of next)

What's interesting is that the 1/x version shortens the chain (i.e. decreased runtime cost) while producing smaller results, compared to the master version. The story is the same on the kernel archive.

	Avg 5.82 113808kB (master)
	Avg 4.76 108044kB (next, has 1/x version)
	Avg 5.81 105768kB (this patch on top of next)
Previous: Nicolas Pitre
Message 6 of 6 in “pack-object mystery explained”
  1. Nicolas PitreMay 15, 2006
  2. simple euristic for further free packing improvementsNicolas Pitre, May 15, 2006
  3. Junio C HamanoMay 16, 2006
  4. Nicolas PitreMay 16, 2006
  5. improve depth heuristic for maximum delta sizeNicolas Pitre, May 16, 2006
  6. Junio C HamanoMay 16, 2006

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.