DIP25 draft available for destruction
Chad Joan
chadjoan at gmail.com
Fri Feb 8 06:16:11 PST 2013
On 02/08/2013 02:06 AM, deadalnix wrote:
> On Friday, 8 February 2013 at 06:28:54 UTC, Chad Joan wrote:
>>
>> Destroy!
>>
>
> The cost of passing a delegate is way higher than the cost of passing
> the extra pointer. Delegate cause an opaque function call so :
> - All registers that the callee is allowed to trash must be saved
> preventively (even if the callee don't trash them).
> - CPU cannot really use branch prediction.
> - The compiler must assume that the delegate call may have arbitrary
> side effects so have to commit everything to memory and then take
> everything back afterward. This prevent many instruction reordering,
> register promotions, dead read/write elimination, constant propagation
> and so on.
>
> Considering passing by ref is sometime done to fasten things, this
> defeat the whole point.
>
> Note that the operation above are not dying slow, but clearly not a good
> fit for ref.
>
Fair enough.
I wonder if we can learn something from it though. It does seem to
provide a conceptual model that's very desirable.
More information about the Digitalmars-d
mailing list