http://qs1969.pair.com?node_id=354991


in reply to Functional Inside Out Closure Objects

In general closures have a lot higher overhead. Instead of storing a scalar variable as a hash entry, you are storing a reference to a CV structure, which points to a pad list which points to a padname list (containing the name of the lexical), and a pad containing a pointer to the lexicial plus pointers to other pad targets if there are any ops in the sub.

goto &f has roughly the same overhead as a normal exit from a sub followed by a call to another sub; ie the following two are roughly equivalent performance-wise:

sub f { ...; goto &g } sub g { ...} f(); sub f { ...; } sub g { ...} f(); g();