[webkit-dev] Using memcmp
mjs at apple.com
Tue Jun 30 11:53:38 PDT 2009
On Jun 30, 2009, at 9:57 AM, Patrick Hanna wrote:
> I have noticed that rather than using memcmp for comparing strings,
> webkit likes to cast to uint32_t* and compare in a for loop. For
> example, WebCore::equal in AtomicString.cpp and StringHash::equal in
> StringHash.h. Is there any reason not to memcmp? I am assuming that
> most implementations of memcmp will do the word alignment and
> basically do the same thing.
We found the copy loop to be a little bit faster than memcmp on the
platforms where we tested. memcmp tends not to do as well for short
strings because it doesn't know that the start and end have some
alignment guarantees. Also there is the function call overhead.
> The reason I ask is because StringHash::equal does not check for
> PLATFORM(ARM) or PLATFORM(SH4) so I was going to submit a patch to
> use memcmp for ARM/SH4 but didn't know if that was frowned upon (and
> WebCore::equal does a loop for ARM/SH4 as well).
Is there a reason you'd want to make the code use a different
implementation depending on the CPU? (It's not obvious to me from your
More information about the webkit-dev