Can you shrink it further?

Stefan Koch via Digitalmars-d digitalmars-d at puremagic.com
Wed Oct 12 06:32:45 PDT 2016


On Wednesday, 12 October 2016 at 12:46:50 UTC, Andrei 
Alexandrescu wrote:
> On 10/12/2016 06:56 AM, Stefan Koch wrote:
>> I just confirmed that branching version is faster then 
>> table-lookup.
>>
>> please test it our for yourself
>> http://paste.ofcode.org/3CpieAhkrTYEcSncbPKbrj
>>
>> The table-lookup does produce the smallest code though.
>
> Nice. I like that the table is NOT looked up on the ASCII path, 
> so it stays cold in ASCII text. However, there's a problem with 
> this pattern:
>
>     size_t char_length = 1;
>     immutable c = s[0];
>     if (c < 192)
>     {
>         Lend :
>         s = s.ptr[char_length .. s.length];
>         return ;
>     }
>
> as opposed to:
>
>     immutable c = s[0];
>     if (c < 192)
>     {
>         Lend :
>         s = s.ptr[1 .. s.length];
>         return ;
>     }
>
> In the second case, the compiler generates an inc for bumping 
> the pointer and a dec for decreasing the length (small 
> instructions). If the variable char_length is used, add/sub 
> must be used (larger). -- Andrei

btw.
We could get rid of of a sub if we changed slices from holding a 
pointer and a length to holding two pointers.



More information about the Digitalmars-d mailing list