Sorry for the delay and missing the "strace -ttT" request,
but today was a "Physics" day and took me longer to
notice your email.
On Fri 24.Jul'09 at 14:21:20 -0700, Linus Torvalds wrote:
What a huge difference!
And the NO_CURL version really does load a lot faster in cold-cache. We're
not talking small differences:
With NO_CURL=1 the strace log contained 242 lines (vs 404), but
the time difference was not as great as you got. But it was
better:
0.55 +- 0.06 (for 8 runs)
So I repeated the tests with curl enabled and this time
I got:
0.77 +- 0.03 (for 6 runs)
(yesterday I got 0.61 +- 0.08, so there is lot of noise)
So it is better, but not by the same factor as you saw.
But I may have an explanation for this.
After I clear the cache I wait a few seconds to stabilize,
and I do the 'time git branch' test when I see that
there is no activity in the disk by looking at
the 'btrace' output in another xterm.
I noticed that after dropping the cache and before
I do the test there is lot of activity of something
called 'preload', with lines which look like these:
8,0 0 42881 495.067655112 17777 Q R 51244367 + 552 [preload]
8,0 0 42882 495.067659931 17777 G R 51244367 + 552 [preload]
8,0 0 42883 495.067664401 17777 I R 51244367 + 552 [preload]
I hadn't noticed this before and now I checked that,
"preload is an adaptive readahead daemon that prefetches files mapped by
applications from the disk to reduce application startup time."
So I guess that my tests here for your NO_CURL=1 idea is inconclusive,
as I am not sure what preload is prefetching.