From: David Miller <davem@davemloft.net>
Date: Fri, 07 Dec 2007 04:53:29 -0800 (PST)
While doing the initial object counting, most of the time is spent in
lookup_object(), memcmp() (via hashcmp()), and inflate(). I tried to
see if I could do some tricks on sparc with the hashcmp() but the sha1
pointers are very often not even 4 byte aligned.
I suspect lookup_object() could be improved if it didn't use a hash
table without chaining, but I can see why 'struct object' size is a
concern and thus why things are done the way they are.
samples % app name symbol name
504 13.7517 libc-2.6.1.so memcmp
386 10.5321 libz.so.1.2.3.3 inflate
288 7.8581 git lookup_object
248 6.7667 libz.so.1.2.3.3 inflate_fast
201 5.4843 libz.so.1.2.3.3 inflate_table
175 4.7749 git decode_tree_entry
...
Deltifying is %94 consumed by create_delta(), the rest is completely
in the noise.
samples % app name symbol name
10581 94.8373 git create_delta
181 1.6223 git create_delta_index
72 0.6453 git prepare_pack
55 0.4930 libc-2.6.1.so loop
34 0.3047 libz.so.1.2.3.3 inflate_fast
33 0.2958 libc-2.6.1.so _int_malloc
22 0.1972 libshadow.so shadowUpdatePacked
21 0.1882 libc-2.6.1.so _int_free
19 0.1703 libc-2.6.1.so malloc
...
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html