On Sunday, 26 June 2016 at 16:40:08 UTC, Jay Norwood wrote:
After watching Andre's sentinel thing, I'm playing with strlen
on char strings with 4 terminating 0s instead of a single one.
Seems to work and is 4x faster compared to the runtime version.
nothrow pure size_t strlen2(const(char)* c) {
if (c is null)
return 0;
size_t l=0;
while (*c){ c+=4; l+=4;}
while (*c==0){ c--; l--;}
return l+1;
}
This is the timing of my test case, which I can post if anyone
is interested.
strlen\Release>strlen
2738
681
Did you also compare to strlen from libc? I'd guess GNU libc uses
a lot more tricks like vector instructions.