D array expansion and non-deterministic re-allocation

dsimcha dsimcha at yahoo.com
Tue Nov 17 16:30:45 PST 2009


== Quote from Bartosz Milewski (bartosz-nospam at relisoft.com)'s article
> dsimcha Wrote:
> >
> > The one thing that I think has been missing from this discussion is, what would be
> > the alternative if we didn't have this "non-deterministic" reallocation?  How else
> > could you **efficiently** implement dynamic arrays?
> In the long run (D3), I proposed using the "unique" type modifier. If an array
is unique, the compiler knows that there are no slices to worry about, and it can
use in-place reallocation to its heart content. That pretty much solves the
performance problem.
> In the short run (D2), I would suggest sticking to "reallocate on every
extension" semantics (especially in SafeD) and provide a library solution (a la
C++ std::vector) where the performance of appending is an issue.

Probably not a bad idea, since:

1.  I've concluded that appending to slices simply can't be made both efficient
and safe.

2.  We'll probably get a std.collections anyhow.

3.  If you **really** care about performance, you should only append when you
don't know the length in advance.  If you know the length, you should always
pre-allocate.



More information about the Digitalmars-d mailing list