On 1/7/22 2:54 PM, eugene wrote:

A couple of impressions...

* Does .until() make a copy of original string? And GC then will take care of it?

No, `until` will iterate the string one character at a time until it sees that character (excluding it). It doesn't make a copy of the data.

In effect, it's doing the "trim" and the iteration to print in one step. In your chosen solution earlier, you were doing it 3 times -- once to find the end of the null-terminated string (via `fromStringz`), once to strip the newline (well, this isn't too bad, since it goes from both ends), and once to actually print it.

* So many ways to do simple C printf("%s", (char*)buf)... I am feeling like Buridan's ass

There are a million ways to get what you want. I like to go for ones that:

1. don't allocate needlessly (I hate allocating a string just to print it, and then throw it away, regardless of whether it's GC or not)
2. read concisely and clearly.
3. Are as efficient as possible.

The one wart here is the cast, but that's impossible to avoid unless you want to allocate. Adhering to 2 and 3 above sometimes are in conflict. But rule 1 is essential for performance.

In C you have one choice (printf), but that choice may not fit your needs.

-Steve

Reply via email to