dmd makes D appear slow

Chris via Digitalmars-d digitalmars-d at puremagic.com
Fri May 29 12:04:41 PDT 2015


On Friday, 29 May 2015 at 18:38:20 UTC, H. S. Teoh wrote:
> On Fri, May 29, 2015 at 06:13:02PM +0000, weaselcat via 
> Digitalmars-d wrote:
>> In nearly every benchmark I see D in, the default compiler 
>> used is dmd
>> which runs computationally intense tasks 4-5x+ slower than 
>> GDC/LDC
>
> As I keep saying, in my own compute-intensive projects I have
> consistently found that dmd-generated code (dmd -O -inline 
> -release) is
> about 20-30% slower on average, sometimes even up to 50% slower,
> compared to gdc-generated code (gdc -O3 -finline -frelease). 
> This is
> measured by actual running time in an actual application, not
> benchmark-specific code.
>
> I have looked at the generated assembly before, and it's clear 
> that the
> gdc optimizer is way ahead of dmd's. The dmd optimizer starts 
> failing to
> inline inner loop code after about 1-2 levels of function call 
> nesting,
> not to mention it's unable to factor out a lot of loop 
> boilerplate code.
>
> The gdc optimizer, by contrast, not only factors out almost all 
> loop
> boilerplate code and inlines inner loop function calls several 
> levels
> deep, it also unrolls loops in a CPU-specific way, does major 
> loop
> restructuring, compounded with much more linear code 
> optimization than
> dmd does, instruction reordering and then refactoring after 
> that, etc.,
> in some cases reducing the size of inner loop code (as in, the 
> amount of
> code that runs per iteration) by up to 90%.
>
> I don't know the internal workings of the dmd optimizer, but 
> it's clear
> that at present, with almost nobody working on it except 
> Walter, it's
> never going to catch up. (Maybe this statement will provoke 
> Walter into
> working his magic? :-P)
>
>
> [...]
>> This isn't the first time I've seen this, in basically every 
>> benchmark
>> featuring D I have to submit a patch/make a comment that dmd 
>> shouldn't
>> be used. Make no mistake, this is damaging to D's reputation - 
>> how
>> well does D's "native efficiency" go over when people are 
>> saying it's
>> slower than Scala and F#(mono)?
>> 
>> LDC and GDC need promoted more.
> [...]
>
> This will probably offend some people, but I think LDC/GDC 
> should be the
> default download on dlang.org, and dmd should be provided as an
> alternative for those who want the latest language version and 
> don't
> mind the speed compromise.
>
>
> T

LDC can work wonders, indeed. I've seen it. Drawback: GDC and LDC 
lag behind.

D doesn't like legacy code, so I always update my code.

Maybe we could synchronize dmd, ldc and gdc faster? Dmd is the 
only way to update your code.


More information about the Digitalmars-d mailing list