Well, maybe, although it's interesting to consider how many strings streams need to beat string concatenation. Moreover, streams aren't hyper efficient either...

On 11/16/13 10:09 , b...@openinworld.com wrote:

Code Critic rule Optimization > String concatenation instead of streams
says:

"Check for string concatenation inside some iteration message. Since
string concatenation is O(n^2), it is better to use streaming since it
is O(n) - assuming that n is large enough. As a general principal avoid
, since the receiver is copied. Therefore chaining , messages will lead
to multiple useless copies of the receiver."

That is,
     String streamContents: [:s |
         #('abc' 'def' 'ghi')  do: [:each | s nextPutAll: each asString]]

should be used instead of...
     'abc' , 'def' , 'ghi'.

However the first clutters the code.  What about something like...
     { 'abc' . 'def' . 'ghi' } asStreamString
where
     Collection>>asStreamString
         ^ String streamContents: [:s | self do: [:each | s nextPutAll:
each asString]]

cheers -ben




Reply via email to