domingo, 26 de agosto de 2007

for - while

Usualmente, para iterar un código N veces se hace

for ($a = 0; $a < N; $a++) {

pero pensandolo un poco, este código se puede optimizar, ya que la segunda y tercer sentencia se pueden juntar, con lo que llegamos a lo siguiente

for ($a = -1; ++$a < N;) {

También se podría encarar de esta forma

$a = 0;
while (++$a < N) {

pero la anterior parece (apenas) mejor, en la práctica. Si bien esta optimización de código mejor muy poco la velocidad, hay que tener en cuenta que es una de las iteraciones más comunes y se puede repetir mucho a lo largo de nuestro trabajo.

Ver ejemplo

2 comentarios:

Nicolaspar dijo...

Está muy bien la comparación aunque hay un comentario importante. En el caso de for ($i = 0; ++$i < N;) hay que tener en cuenta que $i inicialmente nunca tendrá valor cero, sino que arrancará en uno, cosa que para adaptar a un for común sería: for ($i = -1; ++$i < N;). Es un simple comentario que me parece que ayudará a quien lea, ya que esta haciendo un iteración de menos y en cuentas de milesegundos suma ;). Otra es que es mucho mejor usar ++$i que usar $i++ en un for tradicional.

PD: Por que usas $a para representar a la $iteracion? (de curioso nomás :p)
Saludos y buen blog!

Unknown dijo...

Es cierto, nicolaspar... me equivoqué ahí, edito el post para que quede bien.

Usé $a porque me pareció más corto y cómodo para hacer pruebas =)

Gracias por tu comentario