On 05.01.2018 14:10, Jonathan M Davis wrote:
Taking it a step further, I tried switching some of the static foreach's
over to using array literals, since they held values rather than types, and
that seemed to have minimal impact on the time to run dub test. However, by
switching to using std.range.only, it suddenly was taking more like 11.8
seconds. So, with a few small changes, I cut the time to run dub test down
by almost a third.

This is weird, as the compiler will apply the following rewrites:

static foreach(i;only(0,1,2,3,4)){}

=>

static foreach(i;{
    int[] r=[];
    foreach(i;only(0,1,2,3,4)){
        r~=i;
    }
    return r;
}()){}

=> // (using CTFE)

static foreach(i;[0,1,2,3,4]){}

=> // (uses shortcut; not instantiating the AliasSeq template)

static foreach(i;AliasSeq!(0,1,2,3,4)){}

Reply via email to