On 2/27/2020 1:45 AM, Rainer Schuetze wrote:
The string buffer could also be stack allocated or manually managed with
malloc/free by the string interpolation type.

It's quite a big deal to make that work, and does not address the inherent inefficiency of it.

printf, for all its faults, is very efficient, and one reason is it does not require arbitrary temporary storage. Another is it does not require exception handlers. I, for one, simply would not use such when printf is available.

People often overlook how *expensive* RAII is. Turn exception handling on and have a look at the generated code.

It's a minor syntactic convenience with an unexpected large and hidden cost. That's not what D is about.

Leave this at the user's discretion with:

    f(format("hello %betty"));

where the user chooses via the format function which method of handling temporaries he finds appropriate.

---

Note that the reason outbuffer.d has a printf member function is because it is fast and efficient to format data directly into the output buffer rather than going through a series of temporary strings first.

Reply via email to