Eficiencia algoritmos php: bucle for

Recorrer un array en php de la manera mas eficiente es con foreach. Has de saber que es el mas rápido. Un for con un i < un número es lo segundo mas rápido. Finalmente lo mas lento es recorrer el array con un for con i < count(array), por que cada vez que incrementa i llama a la funcion count de array. Si no sabes cuantos elementos tiene el array pudes guardar el valor de count en una variable y hacer i < nElementos como en el ejemplo a continuación

Puedes comprobarlo con el siguiente código, en el segundo for donde dice i < l mete i < count(vec) y te darás cuenta que es el doble lo que tarda. Esto se debe a que el count recorre todos lo elementos del array pasado como parámetro y los cuenta. Este mismo problema ocurre en java script. Para este cometido el mas eficiente de todos es Java ya que al crear un objeto tiene una propiedad que se establece al crearlo con lo cual no tiene la necesidad de recorrer el array para saber cuantos elementos tiene.

<!--?php
// tiempo inicial
$t_tiempo = explode(" ",microtime());
$t_tiempo = $t_tiempo[0] + $t_tiempo[1];
$tiempoinicial = $t_tiempo;
$vec = array();
$vec2 = array();
for($i = 0; $i< 100000; $i++)
{
$vec[$i] = $i;
}
$l = count($vec);
/*for($i = 0; $i < $l;$i++){ $vec2[$i] = $i; } */ foreach($vec as $k => $v)
$vec2[$k]=$v;

// tiempo final
$t_tiempo = explode(" ",microtime());
$t_tiempo = $t_tiempo[0] + $t_tiempo[1];
$tiempofinal = $t_tiempo;
$totaltime = ($tiempofinal - $tiempoinicial);
echo "La pagina se ha cargado en :".$totaltime." segundos ";

?>

Bibliografía

Esta idea no fue mía sino que me inspiré en la idea de un compañero de trabajo y amigo: http://blog.webrene.es/ que usó este mismo principio para javascript

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s