Small Buffer Optimization for string and friends
Michel Fortin
michel.fortin at michelf.com
Sun Apr 8 11:16:18 PDT 2012
On 2012-04-08 17:14:37 +0000, Andrei Alexandrescu
<SeeWebsiteForEmail at erdani.org> said:
> On 4/8/12 12:05 PM, Walter Bright wrote:
>> On 4/8/2012 7:53 AM, Andrei Alexandrescu wrote:
>>> Once anyone asks for .ptr a conservative copy will be made.
>>
>> That could get expensive. You cannot just point into the small string
>> part, because that may only exist temporarily on the stack. There are
>> some pathological cases for this.
>
> As I mentioned, the first call to .ptr changes representation, thus
> making the allocation that the optimization had saved. Things are not
> worse off than before.
This only works if the code has write access to that variable.
Also, if the variable is a temporary copy such as a by-value function
parameter, only the representation of that temporary copy will be
affected. Every time you call a function which calls .ptr a new copy
will be allocated on the heap. If such a function call is part of a
loop, it'll degrade performance noticeably.
--
Michel Fortin
michel.fortin at michelf.com
http://michelf.com/
More information about the Digitalmars-d
mailing list