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

Re: [PATCH 5/5] reset: update cache-tree data when appropriate

From
Thomas Rast <trast@student.ethz.ch>
Date
Dec 7, 2011, 07:53 UTC
Message-ID
<201112070853.15364.trast@student.ethz.ch>
In-Reply-To
<7v62hte1k7.fsf@alter.siamese.dyndns.org>
Junio C Hamano wrote:
Show 16 quoted lines
> Thomas Rast <trast@student.ethz.ch> writes:
> > @@ -84,6 +85,12 @@ static int reset_index_file(const unsigned char *sha1, int reset_type, int quiet
> >  		return error(_("Failed to find tree of %s."), sha1_to_hex(sha1));
> >  	if (unpack_trees(nr, desc, &opts))
> >  		return -1;
> > +
> > +	if (reset_type == MIXED || reset_type == HARD) {
> > +		tree = parse_tree_indirect(sha1);
> > +		prime_cache_tree(&active_cache_tree, tree);
> > +	}
> 
> The basic idea that MIXED or HARD should result in a cache-tree that match
> the tree we just read is sound, but how expensive is prime_cache_tree()? I
> think it reads the same tree once again. Admittedly, the data needed to
> reconstruct the tree is likely to be hot in core, but it may be necessary
> to measure before deciding if this is a good change.

Oh, I just didn't bother with timings because it's the same strategy that read-tree follows, so I assumed if it was worth it back then, it should again be a win.

For linux-2.6 as usual and best-of-10:
  git reset            before: 0:00.25real 0.12user 0.11system
	               after:  0:00.28real 0.14user 0.12system
  git reset --hard     before: 0:00.21real 0.13user 0.06system
                       after:  0:00.18real 0.10user 0.07system

So we spend ~30ms of extra user time, at a possible gain of 30% in future git-commit invocations, as mentioned in the cover letter. I think that's worth it :-)

-- 
Thomas Rast
trast@{inf,student}.ethz.ch
Previous: Junio C HamanoNext: Thomas Rast
Message 9 of 10 in “cache-tree revisited”
  1. 0/5 cache-tree revisitedThomas Rast, Dec 6, 2011
  2. 1/5 Add test-scrap-cache-treeThomas Rast, Dec 6, 2011
  3. Junio C HamanoDec 6, 2011
  4. 2/5 Test the current state of the cache-tree optimizationThomas Rast, Dec 6, 2011
  5. 3/5 Refactor cache_tree_update idiom from commitThomas Rast, Dec 6, 2011
  6. 4/5 commit: write cache-tree data when writing index anywayThomas Rast, Dec 6, 2011
  7. 5/5 reset: update cache-tree data when appropriateThomas Rast, Dec 6, 2011
  8. Junio C HamanoDec 6, 2011
  9. Thomas RastDec 7, 2011
  10. Thomas RastDec 8, 2011

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.