Subject: Re: [PATCH WIP] sha1-lookup: make selection of 'middle' less aggressive

From: "Shawn O. Pearce" <[email-masked]>
Date: Mon, 31 Dec 2007 17:40:15 -0500

Marco Costalba <[email-masked]> wrote:
> Just for document the profiling I have uploaded a snapshot of
> KCachegrind profiling data on a run of git-log on the git tree:
> 
> http://digilander.libero.it/mcostalba/callgrind_git_log1.png
> 
> From there you can see that pretty.c and strbuf.c, after all the
> optimizations, account for less then 8% of total time.
> The biggest part is that 86.64% that is due almost entirely to zlib.
> 
> In particular
> 
> st = inflate(&stream, Z_FINISH);
> 
> called from unpack_compressed_entry() in sha1_file.c accounts for 72%
> of total time.

That's one of the areas where packv4 was actually a reasonably
good gain.  It was faster for packv4 to convert a dict based commit
or tree into the canonical raw format used by git than it was for
zlib inflate to decompress the very same data.

It wasn't a huge gain, but if I recall we were saving a good half
second on a 4 second "git log --raw >/dev/null" time.  And that
was before we even tried to improve the tree walking APIs to
take advantage of the smaller (and easier to read) dict based
tree objects.

Linus already mentioned in another reply on this thread that the
inflate time may be all page faults.  The savings we were seeing
from the dict based format may have simply been due to less page
faults; the dict based format was slightly smaller so we probably
got a lot more in disk cache at once.

-- 
Shawn.