T[new]
    dsimcha 
    dsimcha at yahoo.com
       
    Sun Aug  9 19:35:15 PDT 2009
    
    
  
== Quote from bearophile (bearophileHUGS at 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
    
    
More information about the Digitalmars-d
mailing list