<br><br><div class="gmail_quote">El 27 de mayo de 2012 16:42, pancho horrillo <span dir="ltr"><<a href="mailto:pancho@pancho.name" target="_blank">pancho@pancho.name</a>></span> escribió:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On Sun, May 27, 2012 at 03:13:19PM +0200, JJ Merelo wrote:<br>
> Hola<br>
Buenas.<br>
<div class="im"><br>
> Pregunta corta: ¿Cómo se hace para que Perl no devuelva un valor de una<br>
> subrutina?<br>
</div>AFAIK, return; devuelve undef.<br></blockquote><div><br>En realidad, devolver undef no es devolver nada. Es edvolver undef, y sigue tardando más o menos lo mismo que si haces return 1 o return 0. <br></div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

<div class="im"><br>
> Pregunta larga: en el MasterMind hay subrutinas que se llaman millones (o<br>
> miles de millones) de veces. El profiler dice que, curiosamente, el<br>
> devolver el valor de la misma es el cuello de botella. Igual hay otra forma<br>
> de solucionarlo, como meterlas inline (la verdad, no sé como hacerlo) pero<br>
> lo que he hecho ha sido declarar el prototipo como que devuelvan void y<br>
> hacer que se les pase el hashref de vuelta como parámetro. Marginalmente<br>
> mejora algo, pero sigue devolviendo el valor devuelto por la última función<br>
> en la subrutina (un map). Añadir return; no mejora prácticamente nada, y<br>
> declararla como void con prototipo tampoco. ¿Alguna idea?<br>
><br>
</div>Se me ocurre hacer un inline manual, construyendo código programáticamente que<br>
incruste el código de la función llamada en la llamante, y luego haciendo eval<br>
de ello.<br></blockquote><div><br>No vas a ganar mucho si tienes que hacer un eval. Estamos hablando de microsegundos en cada vuelta, más o menos.<br> <br></div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

<br>
No tengo tiempo de explicarlo más, cuando vuelva luego intentaré explayarme un<br>
poco más.<br>
<br>
Hope that it helps.<br>
<br clear="all"></blockquote></div>Eso siempre. Gracias. <br>-- <br>JJ<br>