On Friday, 10 December 2021 at 13:22:58 UTC, Matheus wrote:

My C way of thinking while using D:

import std;

string stripsemicolons(string input){
    char[] s = input.dup;
    int j=0;
    for(int i=0;i<input.length;++i){
        if(s[i] == ';'){ continue; }
        s[j++] = s[i];
    }
    s.length = j;
    return s.idup;
}


Oooh, finally someone suggested to preallocate storage for all these reinventions of the wheel :D

I would suggest instead of the final idup checking the length and only duplicating if certain waste threshold is broken, otherwise just doing https://dlang.org/phobos/std_exception.html#assumeUnique (or a cast to string). The result is unique either way.

Threshold could be relative for short strings and absolute for long ones. Makes little sense reallocating if you only waste a couple bytes, but makes perfect sense if you've just removed pages and pages of semicolons ;)

Be interesting to see if this thread does evolve into a SIMD search...

Reply via email to