Slow performance compared to C++, ideas?
bearophile
bearophileHUGS at lycos.com
Thu May 30 18:42:51 PDT 2013
finalpatch:
> I really like the features offered by D but it's the raw
> performance that's worrying me.
From my experience if you know what you are doing, you are able
to write that kind of numerical D code that LDC compiles with a
performance very close to C++, and sometimes higher. But you need
to be careful about some things.
Don't do this:
foreach (y; (iota(height)))
Use this, because those abstractions are not for free:
foreach (y; 0 .. height)
Be careful with foreach on arrays of structs, because it perform
copies that are slow if the structs aren't very small.
Be careful with classes, because on default their methods are
virtual. Sometimes in D you want to use structs for performance
reasons.
Sometimes in inner loops it's better to use a classic for instead
of a foreach.
LDC needs far more flags to compile a raytracer well. LDC even
support link time optimization, but you need even more obscure
flags.
Also the ending brace of classes and structs doesn't need a
semicolon in D.
Bye,
bearophile
More information about the Digitalmars-d
mailing list