== Quote from bearophile (bearophileh...@lycos.com)'s article > Walter Bright: > > Under the hood, a T[new] will be a single pointer to a library defined > > type. This library defined type will likely contain three properties: > I have another question: are there some performance penalities in using such arrays for normal random access operations? > Bye, > bearophile
import std.stdio, std.perf; final class TNew { uint* foo; uint length; this(uint size) { foo = (new uint[size]).ptr; length = size; } ref uint opIndex(uint index) { return foo[index]; } } void main() { auto pc = new PerformanceCounter; uint[] array = new uint[1]; pc.start; foreach(i; 0..100_000_000) { array.ptr[0]++; } pc.stop; writeln("Direct: ", pc.milliseconds); auto tnew = new TNew(1); pc.start; foreach(i; 0..100_000_000) { tnew[0]++; } pc.stop; writeln("Indirect: ", pc.milliseconds); } Results: Direct: 226 Indirect: 229