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