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

Re: [PATCH (GITK) v2 4/4] gitk: Implement batch lookup and caching of encoding attrs.

From
Paul Mackerras <paulus@samba.org>
Date
Oct 11, 2008, 00:31 UTC
Message-ID
<18671.62417.328489.317909@cargo.ozlabs.ibm.com>
In-Reply-To
<bb6f213e0810100522v653507d6r75cc4c64b57aa459@mail.gmail.com>
Alexander Gavrilov writes:
> OS-enforced command-line size limit on Windows is 32K. Cramming in
> 1000 paths would leave only 32 characters for each path.
Eeek.  OK.
Show 11 quoted lines
> > Also, I wonder why we now have two levels of caching of the encoding
> > attribute.  Your patch 1/4 introduced path_encoding_cache, which was
> > fine, but now we have path_attr_cache as well, which seems to me to
> > serve exactly the same function since the encoding is the only
> > attribute we ever ask about.  Surely we don't need both caches?
> 
> If the (git-gui) patch that reimplements the tcl_encoding procedure is
> applied, we may drop the path_encoding_cache. Current implementation
> is too slow for batch lookup, especially if the encoding is actually
> not supported, and without the cache the lookup would be done on every
> loading of a diff.
I was thinking more in terms of dropping the path_attr_cache actually.

Actually, if [tcl_encoding] is slow, then why is $gui_encoding the untranslated version, so that we do [tcl_encoding $gui_encoding] on each call to get_path_encoding? Why don't we do the tcl_encoding call once and have $gui_encoding be the result of that? In fact $gui_encoding should be the result of this code (from get_path_encoding):

	set tcl_enc [tcl_encoding $gui_encoding]
	if {$tcl_enc eq {}} {
		set tcl_enc [encoding system]
	}

And if [tcl_encoding] is slow, then it should have a cache. There's only likely to be at most 2 or 3 values it gets called for, and it's a constant function.

At this point, what I think I might do is apply your set of patches (but with 2/4 and 3/4 folded into a single patch) and then go through and do another commit that addresses the concerns I've raised. OK?

Paul.
Previous: Alexander GavrilovNext: Alexander Gavrilov
Message 8 of 12 in “Encoding support in GUI”
  1. 0/4 Encoding support in GUIAlexander Gavrilov, Sep 30, 2008
  2. 1/4 gitk: Port new encoding logic from git-gui.Alexander Gavrilov, Sep 30, 2008
  3. 2/4 gitk: Implement file contents encoding support.Alexander Gavrilov, Sep 30, 2008
  4. 3/4 gitk: Support filenames in the locale encoding.Alexander Gavrilov, Sep 30, 2008
  5. 4/4 gitk: Implement batch lookup and caching of encoding attrs.Alexander Gavrilov, Sep 30, 2008
  6. Paul MackerrasOct 10, 2008
  7. Alexander GavrilovOct 10, 2008
  8. Paul MackerrasOct 11, 2008
  9. Alexander GavrilovOct 11, 2008
  10. Paul MackerrasOct 11, 2008
  11. Paul MackerrasOct 10, 2008
  12. Paul MackerrasOct 10, 2008

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.