Compiler optimizations
Walter Bright
newshound1 at digitalmars.com
Fri Dec 19 17:45:26 PST 2008
Robert Jacques wrote:
> I haven't seen I compiler yet to do that optimization and DMD 1.038
> doesn't:
> foreach(ref val; array) val /= x;
> is ten times slower than
> foreach(ref val; array) val *= invx;
> on a 100,000 element array.
The reason the optimizer doesn't replace floating divides with floating
multiplies of the reciprocal is that one gets slightly different answers
(due to roundoff).
> My general rule of thumb is than the optimizer is pretty good within a
> single code block and less so across blocks. And there's really no
> substitute for profiling and testing the user-optimization to see if
> it's actually worthwhile.
It's also straightforward to run obj2asm on the output and see what it's
doing.
More information about the Digitalmars-d
mailing list