On Tuesday, 28 June 2016 at 01:53:22 UTC, deadalnix wrote:
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.

If we were in interview, I'd ask you "what does this returns if you pass it an empty string ?"

Since no one is answering:

It depends on the memory right before c. But if there is at least one 0 right before it - which is quite likely - then you get some crazy big number returned.

Reply via email to