pure static

TheFlyingFiddle kurtyan at student.chalmers.se
Tue Jan 7 03:12:39 PST 2014


On Tuesday, 7 January 2014 at 00:54:10 UTC, bearophile wrote:
> Meta:
>
>> Why not just return arr.dup instead? You're returning a slice 
>> of a stack-allocated array, so of course you shouldn't write 
>> code like this.
>
> In certain critical code paths heap allocations are evil 
> (perhaps even if your generational GC has a stack-like nursery, 
> that currently the D GC doesn't have) :-) And you also want to 
> minimize copies and initializations.
>
> Bye,
> bearophile

Wouldn't it be better to simply allocate on the stack directly in 
the calling function? Or if that is not a possibility use a 
region allocator or even a ScopeStack allocator? It's basically 
just a pointer bump so it should be fast.

So it would translate to something like this:

int[] foo(Allocator)(ref Allocator allocator)
{
    auto arr = allocator.allocate!(int[])(5);
    foreach(i, ref elem; arr)
       elem = i;
    return arr;
}



More information about the Digitalmars-d mailing list