Ah, you're think of operator+, which is now quite efficient. This thread is about operator+=, which is sadly slower than molasses.
Adam On Tue, Sep 4, 2012 at 4:38 PM, Dirk Schulze <[email protected]> wrote: > With a short search in the logs I found optimizations for at least > operator+, but didn't search further: > > http://trac.webkit.org/changeset/86330 > https://bugs.webkit.org/show_bug.cgi?id=58420 > > Greetings, > Dirk > > On Sep 4, 2012, at 4:31 PM, Adam Barth <[email protected]> wrote: > >> Do you have a proposal for how that would work and/or a link to the >> previous discussion? >> >> Adam >> >> >> On Tue, Sep 4, 2012 at 4:27 PM, Dirk Schulze <[email protected]> wrote: >>> I thought we had efforts to make String::operator+= use StringBuilder >>> somehow? I can remember that we had a discussion on webkit-dev and >>> definitely on bugzilla about improving String::operator+= instead of >>> replacing it with StringBuilder. >>> >>> Greetings, >>> Dirk >>> >>> On Sep 4, 2012, at 4:22 PM, Adam Barth <[email protected]> wrote: >>> >>>> As part of the work to deploy efficient string patterns [1] throughout >>>> WebKit, Benjamin and I noticed a bunch of very inefficient code that >>>> uses operator+= with Strings: >>>> >>>> String foo; >>>> for (...) >>>> foo += [...]; >>>> return foo; >>>> >>>> This pattern is particularly inefficient because += mallocs an >>>> entirely new buffer for the result and copies the the string into the >>>> new buffer. That means that this pattern makes O(n) calls to malloc >>>> and does O(n^2) work. A more efficient pattern is to use >>>> StringBuilder: >>>> >>>> StringBuilder foo; >>>> for (...) >>>> foo.append([...]); >>>> return foo.toString(); >>>> >>>> I'm in the process of going through WebCore and removing all callers >>>> of WTF::String::operator+=. Once that's complete, my plan is to >>>> remove WTF::String::operator+= from WTFString.h. Hopefully that will >>>> nudge contributors and reviewers towards more efficient string >>>> patterns. >>>> >>>> Removing operator+= will likely require changes to a number of >>>> port-specific files. I'll do my best to remove these, but I might >>>> need some help from maintainers of individual ports. If you're >>>> interested in helping out, please let me know. >>>> >>>> Many thanks, >>>> Adam >>>> >>>> [1] http://trac.webkit.org/wiki/EfficientStrings >>>> _______________________________________________ >>>> webkit-dev mailing list >>>> [email protected] >>>> http://lists.webkit.org/mailman/listinfo/webkit-dev >>> >> _______________________________________________ >> webkit-dev mailing list >> [email protected] >> http://lists.webkit.org/mailman/listinfo/webkit-dev > _______________________________________________ webkit-dev mailing list [email protected] http://lists.webkit.org/mailman/listinfo/webkit-dev

