> On 13 Mar 2015, at 08:41, stepharo <steph...@free.fr> wrote:
> 
> use
> 
> String streamContents: [:s |
>    s nextPutAll: 'jlklkjkl' ]
> 
> 
> or
> 
> String streamContents: [:s |
>    s << 'jlklkjkl' ]
> 
> 
> it is a great method for manipulating
> 
> Le 10/3/15 19:09, sergio_101 a écrit :
>> 
>> it seems that in more cases than not, i find that developers use a stream 
>> when concatenating some text strings.
>> 
>> I am wondering if this is a smalltalk thing, or is there a real speed 
>> benefit when using streams in this way.
>> 

When adding to a string, you create a new one with the right size and copy over 
the old content.

Using a stream avoids that. But there is a cost for handling the stream, too:

[String streamContents: [:s |
   s nextPutAll: 'jlklkjkl';
         nextPutAll: 'jlklkjkl' ]] bench. "'1,866,774 per second'"


['jlklkjkl' ,  'jlklkjkl'] bench "'5,433,931 per second’"


So it is only faster e.g. when adding to a string in a loop or on larger 
strings.
But it reads quite nice, too, so I tend to use it without thinking about 
performance.

        Marcus



Reply via email to