Small Buffer Optimization for string and friends

Patrick Schluter Patrick.Schluter at bbox.fr
Mon Apr 16 06:11:07 UTC 2018


On Sunday, 8 April 2012 at 09:46:28 UTC, Vladimir Panteleev wrote:
> On Sunday, 8 April 2012 at 05:56:36 UTC, Andrei Alexandrescu 
> wrote:
>> Walter and I discussed today about using the small string 
>> optimization in string and other arrays of immutable small 
>> objects.
>>
>> On 64 bit machines, string occupies 16 bytes. We could use the 
>> first byte as discriminator, which means that all strings 
>> under 16 chars need no memory allocation at all.
>
> Don't use the first byte. Use the last byte.
>
> The last byte is the highest-order byte of the length. Limiting 
> arrays to 18.37 exabytes, as opposed to 18.45 exabytes, is a 
> much nicer limitation than making assumptions about the memory 
> layout.

If the length has multi purpose it would be even better to 
reserve more than just one bit. For all practical purpose 48 bits 
or 56 bits are more than enough to handle all possible lengths. 
This would liberate 8 or even 16 bits that can be used for other 
purposes.


More information about the Digitalmars-d mailing list