mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 20:47:45 +00:00
AK: Remove String-from-StringView optimization
We had an unusual optimization in AK::StringView where constructing a StringView from a String would cause it to remember the internal StringImpl pointer of the String. This was used to make constructing a String from a StringView fast and copy-free. I tried removing this optimization and indeed we started seeing a ton of allocation traffic. However, all of it was due to a silly pattern where functions would take a StringView and then go on to create a String from it. I've gone through most of the code and updated those functions to simply take a String directly instead, which now makes this optimization unnecessary, and indeed a source of bloat instead. So, let's get rid of it and make StringView a little smaller. :^)
This commit is contained in:
parent
94b247c5a9
commit
873da38d0e
4 changed files with 5 additions and 17 deletions
|
@ -38,10 +38,7 @@ namespace AK {
|
|||
|
||||
String::String(const StringView& view)
|
||||
{
|
||||
if (view.m_impl)
|
||||
m_impl = *view.m_impl;
|
||||
else
|
||||
m_impl = StringImpl::create(view.characters_without_null_termination(), view.length());
|
||||
m_impl = StringImpl::create(view.characters_without_null_termination(), view.length());
|
||||
}
|
||||
|
||||
bool String::operator==(const FlyString& fly_string) const
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue