On Thursday, 23 December 2021 at 07:14:35 UTC, Salih Dincer wrote:

It seems faster than algorithms in Phobos. We would love to see this in our new Phobos.

Replace: 436 msecs
Malloc : 259 msecs
*/

It seems because MallocReplace is cheating a lot:
- it is not called through another function like replace is called;
- accesses directly the constant str;
- assumes that it has a single character to replace;
- assumes that the character will be deleted not replaced with something;
- assumes that the character is always ';'
- assumes that the replacing string is not bigger than the replaced one, so it knows exactly how much space to allocate; - does not have any parameter, at least on x86 this means that there is no arg pushes when it's called. - does not return a string, just compares its result with another constant;

Since we already know all this stuff, we can go further :)

```d
string superFast()
{
    enum r = str.replace(";", "");
    return r;
}

```
Replace: 436 msecs
Malloc : 259 msecs
SuperFast: 0 msecs


Reply via email to