Immutable data not copied
Lutger
lutger.blijdestijn at gmail.com
Wed Dec 9 00:54:33 PST 2009
Tomek Sowiński wrote:
> const(FAQ) says: "When doing a deep copy of a data structure, the
> invariant portions need not be copied."
> I'm trying to imagine what code would benefit from such optimization.
>
> immutable struct Large { whole lotta data... }
>
> struct Other { Large l; }
>
> void funkcja(Large s); // no reference annotation on parameter, copied?
> {
> Large t = s; // copied?
> auto other = Other(s); // copied?
> Other o = other; // other.l copied?
> }
>
>
> Tomek
As Simen kjaeraas said, deep copy is about following references. The
optimization mentioned in the faq is not something done automatically by the
compiler, but merely made possible by immutable. Here is a naive example:
class ImageEditDocument
{
immutable(Image)[] layers;
}
Making a copy of such a document for further editing would normally require
copying all images in the layers array. If they are immutable, you can just
copy the references because you know the images will never be modified.
More information about the Digitalmars-d-learn
mailing list