4x faster strlen with 4 char sentinel

deadalnix via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Mon Jun 27 18:53:22 PDT 2016


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

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



More information about the Digitalmars-d-announce mailing list