[phobos] slice vs. append
Andrei Alexandrescu
andrei at erdani.com
Mon Mar 22 08:20:30 PDT 2010
On 03/22/2010 10:16 AM, Steve Schveighoffer wrote:
> I don't think you understand the purpose of the cache. It does not
> store arrays, it stores BlkInfo's. This is information from the GC
> about where a memory block starts, its length, and what flags it was
> created with. Appending in-place to an array does not change the
> cached blockinfo.
Yes, but at the end of the day, you do have a primitive that tells you
whether a given array extends to the end of a given block and
consequently is ok to append to in-place. Correct?
> First, setting length to be smaller already does what you propose,
> except it does not look anything up in the cache.
You told me that for best results I need to do:
arr.length = 0;
arr.assumeSafeAppend();
The last call makes the system assume that I saved no subarray of arr
that I'm interested in keeping. No?
> Second, slicing is a way way more common operation than setting the
> length, and you would be changing this common operation that does 2
> reads and 2 writes to a function call with a cache search. Any gain
> you think you get from removing the block from the cache would be
> overshadowed by the bloating of the slice operation itself.
I'd guess you and David are right.
Andrei
More information about the phobos
mailing list