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

Re: git_checkattr() is inefficient when repeated [Re: [PATCH 00/11] Micro-optimizing lookup_object()]

From
Junio C Hamano <gitster@pobox.com>
Date
Aug 15, 2011, 23:19 UTC
Message-ID
<7vliuujmaj.fsf@alter.siamese.dyndns.org>
In-Reply-To
<201108121759.24884.trast@student.ethz.ch>
Thomas Rast <trast@student.ethz.ch> writes:
> Which would be a 4.5% speedup.  Obviously that won't quite be
> attainable since we want the attributes mechanism to work, but we
> still shouldn't have to open 4398 .gitattributes files when there are
> only 8 .gitattributes plus one .git/info/attributes.

True. At runtime, the attribute mechanism wants a stack of per-directory attributes it can walk up to find the applicable ones maintained for the directory it currently is looking at, and the elements near the leaf are popped from the stack to be discarded when the caller goes on to inspect paths in a different directory (IOW the machinery is optimized for callers that walk the paths in order, without randomly jumping around).

But at least within a process like pack-objects that are known to be long lived, we should be able to instead _keep_ the elements that are popped when we leave directories at deeper levels, and bring them back to the stack when the caller asks for a path in that directory later, without going back to the filesystem.

Previous: Thomas Rast
Message 15 of 15 in “Micro-optimizing lookup_object()”
  1. 00/11 Micro-optimizing lookup_object()Junio C Hamano, Aug 11, 2011
  2. 01/11 object.c: code movement for readabilityJunio C Hamano, Aug 11, 2011
  3. 02/11 object.c: remove duplicated code for object hashingJunio C Hamano, Aug 11, 2011
  4. 03/11 pack-objects --count-onlyJunio C Hamano, Aug 11, 2011
  5. 04/11 object: next_size() helper for readabilityJunio C Hamano, Aug 11, 2011
  6. 05/11 object hash: we know the table size is a power of twoJunio C Hamano, Aug 11, 2011
  7. 06/11 object: growing the hash-table more aggressively does not help muchJunio C Hamano, Aug 11, 2011
  8. 07/11 object: try naive cuckoo hashingJunio C Hamano, Aug 11, 2011
  9. 08/11 object: try 5-way cuckoo -- use all 20-bytes of SHA-1Junio C Hamano, Aug 11, 2011
  10. 09/11 object: try 4-way cuckooJunio C Hamano, Aug 11, 2011
  11. 10/11 object: try 3-way cuckooJunio C Hamano, Aug 11, 2011
  12. 11/11 object: try 2-way cuckoo againJunio C Hamano, Aug 11, 2011
  13. 12/11 object.c: make object hash implementation more opaqueJunio C Hamano, Aug 11, 2011
  14. git_checkattr() is inefficient when repeated [Re: [PATCH 00/11] Micro-optimizing lookup_object()]Thomas Rast, Aug 12, 2011
  15. Junio C HamanoAug 15, 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.