Bartosz Milewski seems to like D more than C++ now :)

Walter Bright newshound2 at digitalmars.com
Fri Sep 20 09:01:13 PDT 2013


On 9/20/2013 8:54 AM, Joseph Rushton Wakeling wrote:
> On 20/09/13 17:28, Andrei Alexandrescu wrote:
>> Why would there be a performance loss?
>
> Depends on the particular case, but my experience is that _in practice_ stuff
> based around range interfaces can often be slower than raw iteration.
>
> I don't think anyone's saying a performance loss is inevitable or unavoidable,
> but there currently is one.

I know that, at least with dmd's back end, it's because the optimizer was built 
around the kinds of things that C++ programmers tend to write. The D 
range/algorithm generates unusual code (for the back end) that the back end 
doesn't optimize for.

For example, ranges tend to lump several variables together and call them a 
'struct'. The back end is not tuned to deal with structs as an aggregate of 
discreet 'variables', meaning that such variables don't get assigned to 
registers. Structs are treated as a lump.

This is not a fundamental performance problem with D.

The back end needs to be improved to "dis-aggregate" structs back into discreet 
variables.


More information about the Digitalmars-d mailing list