Is D slow?

Honey via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Jun 10 05:12:24 PDT 2017


On Saturday, 10 June 2017 at 10:59:24 UTC, Steven Schveighoffer 
wrote:
> I wrote it like this, which confirms that it's indeed 
> bringToFront (I tried your getTransitionIndex function, but 
> that didn't change timings at all):
>
> void insertionSort(alias Less, Range)(Range r)
> if (hasLength!Range && isRandomAccessRange!Range && 
> hasSlicing!Range)
> {
>     foreach (immutable i; 1 .. r.length)
>     {
>         auto ubElem = i - r[0 .. 
> i].assumeSorted!Less.upperBound(r[i]).length;
>         r[ubElem .. i+1].rotateRight;
>     }
> }

Taking the length of upperBound is a great move! ;-)


> On my mac, it's completing in about 4.4 seconds, whereas the 
> C++ version completes in around 3.

On my machine, I am getting the same performance even without 
resorting to memmove. Using getTransitionIndex directly, however, 
leads to a neglectable improvement (about 2.7 vs. 2.8 seconds), 
here.


More information about the Digitalmars-d-learn mailing list