D array expansion and non-deterministic re-allocation
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Mon Nov 23 08:25:09 PST 2009
Bartosz Milewski wrote:
> Andrei Alexandrescu Wrote:
>
>> I'm not sure I figure what the issue is, and I'd appreciate a
>> rehash of the few other issues brought up. (I thought they had been
>> responded to.)
>
> Some of the points are in my message from Sat, 05:19 pm. Especially
> this point: Can a conforming implementation simply re-allocate on
> every expansion? You make it sound like that would violate some
> performance guarantees but there are no specifics.
I don't think a conforming implementation is allowed to do that. The
functioning of many algorithms assumes constant-time append. If D can't
guarantee that, those algorithms won't work.
I've been deliberately vague in the book because I wasn't sure we can
offer a guarantee if the cache is filled. Now I know we can: if a memory
block stores the requested size in addition to today's effective
capacity, then the allocator can overallocate growing arrays and then
detect and correctly handle in-place reallocation requests, even when
the MRU cache capacity is exceeded. There would be a larger cost for
that (acquiring a lock), but it's still a constant amortized per-element
cost.
Andrei
More information about the Digitalmars-d
mailing list