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

Re: [PATCH 6/7] diff: cache textconv output

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 2, 2010, 07:23 UTC
Message-ID
<7vpr2il3mt.fsf@alter.siamese.dyndns.org>
In-Reply-To
<20100402001215.GF16462@coredump.intra.peff.net>
Jeff King <peff@peff.net> writes:
> Running a textconv filter can take a long time. It's
> particularly bad for a large file which needs to be spooled
> to disk, but even for small files, the fork+exec overhead
> can add up for something like "git log -p".

Another reason that "log -p" gets benefit from caching is that you would typically end up running textconv twice on the same blob, once when you compare $commit:$path with $commit~1:$path, and again when you compare $commit~$n-1:$path with $commit~$n:$path (assuming that the $path didn't change between $commit~$n-1 and $commit~1).

It _might_ give you even better performance characteristics if you noice that you are walking history running many textconv, and cache the textconv result from the "older" (i.e. "one" side) tree in-core, until it is used in a "newer" (i.e. "two" side) tree, at which time you would evict it.

Previous: Jeff KingNext: Jeff King
Message 8 of 13 in “textconv caching”
  1. 0/7 textconv cachingJeff King, Apr 2, 2010
  2. 1/7 fix const-correctness of write_sha1_fileJeff King, Apr 2, 2010
  3. 2/7 fix textconv leak in emit_rewrite_diffJeff King, Apr 2, 2010
  4. 3/7 make commit_tree a library functionJeff King, Apr 2, 2010
  5. 4/7 introduce notes-cache interfaceJeff King, Apr 2, 2010
  6. 5/7 textconv: refactor calls to run_textconvJeff King, Apr 2, 2010
  7. 6/7 diff: cache textconv outputJeff King, Apr 2, 2010
  8. Junio C HamanoApr 2, 2010
  9. Jeff KingApr 2, 2010
  10. 7/7 diff: avoid useless filespec populationJeff King, Apr 2, 2010
  11. Junio C HamanoApr 2, 2010
  12. Jeff KingApr 2, 2010
  13. Jeff KingApr 2, 2010

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.