automatic function call after closing block

Jarrett Billingsley jarrett.billingsley at gmail.com
Sat Sep 20 11:40:28 PDT 2008


On Sat, Sep 20, 2008 at 1:48 PM, Saaa <empty at needmail.com> wrote:
> :D
> Looks cool!
> No way I could have come up with that.
> Same question (as I have no clue how this internally works):
> Is there a performance penalty?
>

No more than any other method that uses delegates; it's just a bit of
syntax abuse to call a function.

Delegates work by passing an implicit context pointer to the nested
function as a parameter.  Nested functions use a pointer to the stack
frame of the enclosing function as the context pointer, so they can
access the local variables of the enclosing function.  There is a
performance penalty for calling delegates just as there is for calling
functions through function pointers: it may cause a processor pipeline
stall.  However with the preponderance of object-oriented programming
in which calling virtual methods involves calling functions through
pointers, many modern processors have been so heavily optimized for it
that the performance difference from hard-coding the function address
into the code is negligible.  Not nonexistent, but definitely better
than it used to be.

And besides -- you're calling that delegate once, so it'll be just a
constant time overhead.


More information about the Digitalmars-d-learn mailing list