[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