Programming language benchmark
Don
nospam at nospam.com
Sun Jun 26 12:50:02 PDT 2011
bearophile wrote:
> Don:
>
> Sorry for my slow answer, I was quite busy for days.
>
>
>> I've never heard that claim before. Do you have evidence for that?
>
> I compare/convert code to D every day, so I am aware that D code compiled with DMD is often slower than C/C++ code compiled with GCC. Since some years I even keep a collection of snippets of slow code.
>
> But I am also aware that the low performance has many different causes, like some missing inlining, missing loop unrolling, etc, so spotting a clear and small case of integer arithmetic code that causes a slow down, to give you evidence, is not easy. So I am sorry for my overly broad claim.
It is true in general that DMD's inliner is not very good. I _suspect_
that it is the primary cause of most instances of poor integer
performance. It's actually part of the front-end, not the back-end. So
many of those performance problems won't apply to DMC.
It's also true that the DMD/DMC instruction scheduler doesn't schedule
for modern processors. But last I checked, GCC wasn't really much better
in practice (you have to be almost perfect to get a benefit from
instruction scheduling these days, the hardware does a very good job on
unscheduled code).
Otherwise, I don't think there's any major optimisation it misses. But
it's quite likely that it misses several very specific minor optimizations.
>> If it is true, there's a strong possibility that it's a small, fixable issue (for example, DMD used to have terrible performance for ulong multiplication).<
>
> You are right, the case I'm going to show is a precise problem that's fixable.
[snip]
> -----------------------
>
> For a more real case see:
> http://d.puremagic.com/issues/show_bug.cgi?id=5607
Thanks, that's helpful. It's a major speed difference (factor of 20,
maybe) so it wouldn't have to occur very often to be noticeable.
More information about the Digitalmars-d
mailing list