On Sat, 17 Mar 2007, Morten Welinder wrote:
quoted
samples % app name symbol name
41527 15.6550 git strlen
Almost 16% in strlen? Ugh!
That's a lot of strings, or perhaps very long strings. Or a profiling bug.
It's likely real, and the problem is likely lots of small strings.
Each git tree entry is:
"<octal mode> name\0" <20-byte sha1>
so you do have a *lot* of strlen() calls when doing any tree parsing. And
for some inexplicable reason, glibc thinks strings are long on average, so
it has a fancy algorithm to do 8 bytes at a time and tries to do things
aligned etc.
The size of strlen() on x86-64 with glibc is 232 bytes. I'm not kidding.
Linus