http://www.perlmonks.org?node_id=1009046

PerlOnTheWay has asked for the wisdom of the Perl Monks concerning the following question:

Quoted from perlinterp:

for efficiency reasons, perl in fact just sets a flag, using CATCH_SET(TRUE) . The pp_require , pp_entereval and pp_entertry ops check this flag, and if true, they call docatch , which does a JMPENV_PUSH and starts a new runops level to execute the code, rather than doing it on the current loop.

So by using CATCH_SET it just moves the JMPENV_PUSH to a new runops, rather than doing it on the current loop.

But IMO the same amount of stuff has to be done in both cases, how does this make efficiency better?