AK: Optimize StringView::operator==(const char*) a little bit

Don't compute the strlen() of the string we're comparing against first.
This can save a lot of time if we're comparing against something that
already fails to match in the first few characters.
This commit is contained in:
Andreas Kling 2021-02-23 14:13:57 +01:00
parent 87bb00f6ab
commit 31ac93d051
Notes: sideshowbarker 2024-07-18 21:59:26 +09:00

View file

@ -144,11 +144,15 @@ public:
return !cstring;
if (!cstring)
return false;
size_t other_length = __builtin_strlen(cstring);
if (m_length != other_length)
return false;
return !__builtin_memcmp(m_characters, cstring, m_length);
// NOTE: `m_characters` is not guaranteed to be null-terminated, but `cstring` is.
const char* cp = cstring;
for (size_t i = 0; i < m_length; ++i) {
if (m_characters[i] != *(cp++))
return false;
}
return !*cp;
}
bool operator!=(const char* cstring) const
{
return !(*this == cstring);