On Thu, Oct 4, 2012 at 1:15 AM, Jeff King <[email protected]> wrote:
> On Thu, Oct 04, 2012 at 12:15:47AM +0200, Ævar Arnfjörð Bjarmason wrote:
>
>> I think he was wrong, I tested this on git.git by first creating a lot
>> of tags:
>>
>> parallel --eta "git tag -a -m"{}" test-again-{}" ::: $(git rev-list
>> HEAD)
>>
>> Then doing:
>>
>> git pack-refs --all
>> git repack -A -d
>>
>> And compiled with -g -O3 I get around 1.55 runs/s of git-upload-pack
>> on 1.7.8 and 2.59/s on the master branch.
>
> Thanks for the update, that's more like what I expected.
>
>> FWIW here are my results on the above pathological git.git
>>
>> $ uname -r; perf --version; echo 0000 | perf record
>> ./git-upload-pack .>/dev/null; perf report | grep -v ^# | head
>> 3.2.0-2-amd64
>> perf version 3.2.17
>> [ perf record: Woken up 1 times to write data ]
>> [ perf record: Captured and wrote 0.026 MB perf.data (~1131 samples) ]
>> 29.08% git-upload-pack libz.so.1.2.7 [.] inflate
>> 17.99% git-upload-pack libz.so.1.2.7 [.] 0xaec1
>> 6.21% git-upload-pack libc-2.13.so [.] 0x117503
>> 5.69% git-upload-pack libcrypto.so.1.0.0 [.] 0x82c3d
>> 4.87% git-upload-pack git-upload-pack [.] find_pack_entry_one
>> 3.18% git-upload-pack ld-2.13.so [.] 0x886e
>> 2.96% git-upload-pack libc-2.13.so [.] vfprintf
>> 2.83% git-upload-pack git-upload-pack [.] search_for_subdir
>> 1.56% git-upload-pack [kernel.kallsyms] [k] do_raw_spin_lock
>> 1.36% git-upload-pack libc-2.13.so [.] vsnprintf
>>
>> I wonder why your report doesn't note any time in libz. This is on
>> Debian testing, maybe your OS uses different strip settings so it
>> doesn't show up?
>
> Mine was on Debian unstable. The difference is probably that I have 400K
> refs, but only 12K unique ones (this is the master alternates repo
> containing every ref from every fork of rails/rails on GitHub). So I
> spend proportionally more time fiddling with refs and outputting than
> I do actually inflating tag objects.
An updated profile with your patch:
$ uname -r; perf --version; echo 0000 | perf record
./git-upload-pack .>/dev/null; perf report | grep -v ^# | head
3.2.0-2-amd64
perf version 3.2.17
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.015 MB perf.data (~662 samples) ]
14.45% git-upload-pack libc-2.13.so [.] 0x78140
12.13% git-upload-pack [kernel.kallsyms] [k] walk_component
11.01% git-upload-pack libc-2.13.so [.] _IO_getline_info
10.74% git-upload-pack git-upload-pack [.] find_pack_entry_one
8.96% git-upload-pack [kernel.kallsyms] [k] __mmdrop
8.64% git-upload-pack git-upload-pack [.] sha1_to_hex
6.73% git-upload-pack libc-2.13.so [.] vfprintf
4.07% git-upload-pack libc-2.13.so [.] strchrnul
4.00% git-upload-pack libc-2.13.so [.] getenv
3.37% git-upload-pack git-upload-pack [.] packet_write
> Hmm. It seems like we should not need to open the tags at all. The main
> reason is to produce the "peeled" advertisement just after it. But for a
> packed ref with a modern version of git that supports the "peeled"
> extension, we should already have that information.
B.t.w. do you plan to submit this as a non-hack, I'd like to have it
in git.git, so if you're not going to I could pick it up and clean it
up a bit. But I think it would be better coming from you.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html