Small Buffer Optimization for string and friends

deadalnix deadalnix at gmail.com
Tue Apr 10 01:59:24 PDT 2012


Le 08/04/2012 16:52, Andrei Alexandrescu a écrit :
> On 4/8/12 4:54 AM, Manu wrote:
>> On 8 April 2012 12:46, Vladimir Panteleev <vladimir at thecybershadow.net
>> <mailto:vladimir at thecybershadow.net>> 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.
>>
>>
>> What is the plan for 32bit?
>
> We can experiment with making strings shorter than 8 chars in-situ. The
> drawback will be that length will be limited to 29 bits, i.e. 512MB.
>
> Andrei
>
>

As it is a flag, why not limit the string size to 2GB instead of 512MB ?


More information about the Digitalmars-d mailing list