[Madrid-pm] El tiempo irresistible de volver
Salvador Fandino
sfandino en yahoo.com
Dom Sep 26 11:58:10 PDT 2010
----- Original Message ----
> From: JJ Merelo <jjmerelo en gmail.com>
> To: Lista de correo de Madrid Perl Mongers <madrid-pm en pm.org>
> Sent: Sun, September 26, 2010 8:48:25 PM
> Subject: Re: [Madrid-pm] El tiempo irresistible de volver
>
> Hola,
>
> >
> > ... veras que hay un opcode "leave" que es el que se ejecuta al acabar la
> > subrutina y que es donde se realizan todas esas tareas de mantenimiento.
> >
> > Si no me equivoco, el profiler no ve este opcode ya que no esta asignado a
> > ninguna linea de codigo, y por lo tanto su tiempo de ejecucion el profiler
>se lo
> > asigna al opcode anterior, que se corresponde al return (explicito o
>implicito).
>
> Sí, de eso sí me había dado cuenta, precisamente lo que quería era ver
> si era posible eliminar ese "leave" o bien optimizarlo para que ocupe
> el mínimo tiempo posible.
>
> Si al final voy a tener que usar gotos...
el goto en Perl tampoco es especialmente rapido porque la referencia a la
etiqueta no se resuelve en tiempo de compilacion sino de ejecucion, osea, que
cada vez que realizas un goto, el interprete realiza una busqueda sequencial de
la etiqueta.
$ perl -MO=Concise,-exec -e 'FOO: print 1; goto FOO'
1 <0> enter
2 <;> nextstate(FOO: main 1 -e:1) v:{
3 <0> pushmark s
4 <$> const[IV 1] s
5 <@> print vK
6 <;> nextstate(main 1 -e:1) v:{
7 <"> goto("FOO") v
8 <@> leave[1 ref] vKP/REFC
-e syntax OK
De todas formas, si quieres salir de una subrutina de una forma sucia... usa
"next"!
(aunque ni asi te vas a librar del "leave"!!!)
> --
> JJ
> _______________________________________________
> Madrid-pm mailing list
> Madrid-pm en pm.org
> http://mail.pm.org/mailman/listinfo/madrid-pm
>
Más información sobre la lista de distribución Madrid-pm