On Saturday, 11 December 2021 at 08:46:32 UTC, forkit wrote:
On Saturday, 11 December 2021 at 08:05:01 UTC, Ola Fosheim Grøstad wrote:

Using libraries can trigger hidden allocations.

ok. fine. no unnecessary, hidden allocations then.

// ------------------

module test;

import core.stdc.stdio : putchar;

nothrow @nogc void main()
{
    string str = "abc;def;ab";

    ulong len = str.length;

    for (ulong i = 0; i < len; i++)
    {
        if (cast(int) str[i] != ';')
            putchar(cast(int) str[i]);
    }
}

// ------------------

```putchar(…)``` is too slow!


```

@safe:

extern (C) long write(long, const void *, long);


void donttrythisathome(string s, char stripchar) @trusted {
        import core.stdc.stdlib;
    char* begin = cast(char*)alloca(s.length);
    char* end = begin;
    foreach(c; s) if (c != stripchar) *(end++) = c;
    write(0, begin, end - begin);
}


@system
void main() {
    string str = "abc;def;ab";
    donttrythisathome(str, ';');
}
````

Reply via email to