mirror of
https://github.com/SerenityOS/serenity
synced 2024-10-15 12:23:15 +00:00
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:
parent
87bb00f6ab
commit
31ac93d051
|
@ -144,11 +144,15 @@ public:
|
||||||
return !cstring;
|
return !cstring;
|
||||||
if (!cstring)
|
if (!cstring)
|
||||||
return false;
|
return false;
|
||||||
size_t other_length = __builtin_strlen(cstring);
|
// NOTE: `m_characters` is not guaranteed to be null-terminated, but `cstring` is.
|
||||||
if (m_length != other_length)
|
const char* cp = cstring;
|
||||||
return false;
|
for (size_t i = 0; i < m_length; ++i) {
|
||||||
return !__builtin_memcmp(m_characters, cstring, m_length);
|
if (m_characters[i] != *(cp++))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return !*cp;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool operator!=(const char* cstring) const
|
bool operator!=(const char* cstring) const
|
||||||
{
|
{
|
||||||
return !(*this == cstring);
|
return !(*this == cstring);
|
||||||
|
|
Loading…
Reference in a new issue