Denis Koroskin wrote:
On Tue, 30 Dec 2008 17:30:13 +0300, Frits van Bommel
<[email protected]> wrote:
Bill Baxter wrote:
Merging might be useful there too --- A ~= b ~ c ~ d is probably more
efficiently implemented as 3 ~= ops.
Actually, it's probably most efficiently implemented as 1 "~=" with
multiple parameters. (DMD already does this for arrays)
Perhaps, not not general enough:
A += a * b - c / d; // how to do this one?
That's a very different case, IMHO. Look at Don's posts for an answer to
that one.
I think '~' and '~=' are more likely to allocate if used for their
conventional meaning (adding items to some form of collection). When
performing this operation in-place several times on the same collection
it's quite possibly more efficient to do one big allocation instead of
several small (temporary) ones by pre-calculating the required space.
Your example is likely most efficiently implemented as something like
A += a * b; // Something like FMULADD?
A -= c / d; // Do FDIVADD-like instructions exist?
for most implementations.
(I think Don's suggested semantics should result in this, assuming
sufficient optimization)