On Thu, Oct 4, 2012 at 1:15 AM, Jeff King <peff@xxxxxxxx> 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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html