Operator overloading -- lets collect some use cases
Frits van Bommel
fvbommel at REMwOVExCAPSs.nl
Tue Dec 30 08:31:16 PST 2008
Denis Koroskin wrote:
> On Tue, 30 Dec 2008 17:30:13 +0300, Frits van Bommel
> <fvbommel at remwovexcapss.nl> 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)
More information about the Digitalmars-d
mailing list