The new, new phobos sneak preview
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Wed Apr 8 15:51:19 PDT 2009
bearophile wrote:
> Jarrett Billingsley:
>> Wow, talk about inefficient. Consider you have to write out a
>> 100,000 element array. What a waste of memory.
>
> There are three parameters to consider here: flexibility, speed, and
> complexity.
>
> In most situations you don't need speed and flexibility (because you
> have to print few data and a comma is OK for most printing
> situations), so I think it's better to minimize complexity.
>
> If you need flexibility but speed isn't necessary, use a generator or
> list comprehension or a map, plus a join. So the "complexity" is low
> still because you don't need to learn more syntax.
>
> Then there is the large data case. Often you need to print it with
> commas, so the default printing is fine.
>
> For the uncommon situation you talk about, where you have both large
> data and you need flexibility, then write a small for loop with many
> write() inside.
>
> -----------------------
>
> Andrei:
>> How about parsing?<
>
> How about using a module of the standard library designed for such
> simple parsing purposes?
std.format. There is formattedWrite that looks and works complementary
to formattedRead. About the speed/complexity/flexibility tradeoff, I
think it's a good point in spirit but kind of misapplied. I can't bring
myself to advocate a solution that involves memory allocation and the
such when the task is to dump out an array, and I also need to write and
parse sequences all the time, so I extended the formatting strings to
make that comfortable and consistent for both parsing and writing. That
doesn't preclude using join et al, and also doesn't affect existing code
(currently "%(" is invalid), so I don't quite understand the complaint.
Andrei
More information about the Digitalmars-d
mailing list