About Strings

Lubos Lunak l.lunak at suse.cz
Mon Mar 19 05:55:46 PDT 2012


On Monday 19 of March 2012, Noel Grandin wrote:
> On 2012-03-19 08:27, Lubos Lunak wrote:
> > That said, I myself dislike the buffer class. I doubt its
> > preallocation is a significant requirement for good performance
> > (especially given it's only 16 characters). I
>
> Even in Java, it's a code smell to allocate a StringBuffer object
> without specifying a pre-allocation size.
>
> Might make a good EasyHack to go through the code and change the places
> that allocate OUStringBuffer to give them a reasonable initial size?

 It might make a good EasyHack, but otherwise it seems like a waste of effort 
to me. Especially given that in some places finding out the reasonable 
initial size would not be worth the cost. It would be much simpler if we 
could raise the preallocation size to something more sensible, except that we 
can't, since surprise surprise that overhead remains there when 
OUStringBuffer::makeStringAndClear() converts it to OUString (one more reason 
why the buffer classes just do not make much sense).

 But let me ponder a bit more the idea of trying to get rid of the buffer 
class. Next thing on my todo for string classes is the efficient operator+, 
based on the proof of concept already posted to this list, which should make 
a lot of usage of the buffer classes obsolete, and it would throw away some 
work done for the suggested EasyHack. So I think it'd be better to evaluate 
this when that work is done, seeing how much usage of the buffer class would 
be there that would be actually justified. And even then, by that time, it 
might be simpler to just go with OUString::reserve().

-- 
 Lubos Lunak
 l.lunak at suse.cz


More information about the LibreOffice mailing list