toString, to!(char[]) & co

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Wed Mar 10 14:23:36 PST 2010


On 03/10/2010 04:16 PM, Fawzi Mohamed wrote:
> If you look at the allocations needed for a toString, one sees the
> allocation of a lot of small strings, alloacation for the concatenation
> of a couple of the small strings, then again for the larger blocks until
> you get the final string.
> To me it reeks of bad design, especially if there is an easy way to
> avoid most problems, a way that can avoid almost all allocations.
>
> I find it much better to base everything on something like
> void writeOut(T,S...)(void delegate char[]sink, T object,S formatting)
> that outputs to a sink, so that you can have output without memory
> allocation.
> (well my version is little more complex because I want to accept also
> other stuff not just a sink
> http://github.com/fawzi/blip/blob/master/blip/io/BasicIO.d
> )

I agree. For the longest time I wanted to find the time to output and 
format stuff to arbitrary output streams (including string appenders as 
a particular case), but couldn't find the time.

Andrei




More information about the Digitalmars-d mailing list