1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-14 08:34:57 +00:00

AK: Make String::count not use strstr and take a StringView

This was needlessly copying StringView arguments, and was also using
strstr internally, which meant it was doing a bunch of unnecessary
strlen calls on it. This also moves the implementation to StringUtils
to allow API consistency between String and StringView.
This commit is contained in:
Idan Horowitz 2021-09-11 01:02:24 +03:00
parent 4e40eaf34c
commit 6d2b003b6e
5 changed files with 19 additions and 17 deletions

View file

@ -427,6 +427,20 @@ String to_titlecase(StringView const& str)
return builder.to_string();
}
// TODO: Benchmark against KMP (AK/MemMem.h) and switch over if it's faster for short strings too
size_t count(StringView const& str, StringView const& needle)
{
if (needle.is_empty())
return str.length();
size_t count = 0;
for (size_t i = 0; i < str.length() - needle.length() + 1; ++i) {
if (str.substring_view(i).starts_with(needle))
count++;
}
return count;
}
}
}