D outperformed by C++, what am I doing wrong?

Neia Neutuladh via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Aug 13 00:03:46 PDT 2017


On Sunday, 13 August 2017 at 06:09:39 UTC, amfvcg wrote:
> Hi all,
> I'm solving below task:

Well, for one thing, you are preallocating in C++ code but not in 
D.

On my machine, your version of the code completes in 3.175 
seconds. Changing it a little reduces it to 0.420s:

     T[] result = new T[input.length];
     size_t o = 0;
     for (uint i; i < input.length; i=min(i+range, input.length))
     {
         result[o] = sum(input[i..min(i+range, input.length)]);
         o++;
     }
     return result[0..o];

You can also use Appender from std.array.


More information about the Digitalmars-d-learn mailing list