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...