unreal4u's Personal Network Because my reality… is just your virtuality

20Dic/090

Micro-optimizaciones en PHP… desmitificadas!

Contar elementos de un arreglo y el for

Esta prueba es bastante interesante, debido a que siempre se lee en distintos foros sobre la diferencia entre el count() y el sizeof() y su implicancia en velocidad. Veamos el código aplicado:

<?php
define('NMAX',10);
for($i = 0; $i < NMAX; $i++) $arr[] = 'asdfqwerty'.$i;

$t = time() + microtime();
for ($i = 0; $i < count($arr); $i++) $tmp = $arr[$i];
$r[] = number_format((time()+microtime()) - $t,7,'.',',');

$t = time() + microtime();
$numero = count($arr);
for ($i = 0; $i < $numero; $i++) $tmp = $arr[$i];
$r[] = number_format((time()+microtime()) - $t,7,'.',',');

$t = time() + microtime();
for ($i = 0; $i < sizeof($arr); $i++) $tmp = $arr[$i];
$r[] = number_format((time()+microtime()) - $t,7,'.',',');

$t = time() + microtime();
$numero = sizeof($arr);
for ($i = 0; $i < $numero; $i++) $tmp = $arr[$i];
$r[] = number_format((time()+microtime()) - $t,7,'.',',');

unset($arr,$numero,$t,$tmp);
?>Tiempos:<ul><?php
foreach($r AS $a) echo '<li>Tiempo caso 1: '.$a.'</li>';
?></ul>;
Máximo de memoria ocupada: <strong><?php echo round(memory_get_peak_usage() / 1024); ?></strong> KiB<br>
N&uacute;mero de elementos: <strong><?php echo NMAX; ?></strong>.

Nuevamente, existen dos opciones: copian y pegan el código para probarlo en sus equipos o bien ven una prueba en vivo y en directo con 10 elementos.

Resultados

Esta vez, y a diferencia de la prueba anterior, no hubieron muchas sorpresas, más que los que esperaba encontrar:
2009-12-19-u4u-0008

Las pruebas son reveladoras: por lo general, es mucho mejor ocupar count() antes del for. La función sizeof si bien es cierto cumple exactamente el mismo cometido, es más lento que count() a medida que el tamaño del arreglo crece. Para arreglos enanos es mejor ocupar sizeof(), pero la diferencia es tan poca que es realmente despreciable. Mi consejo es que siempre se ocupe count() para revisar tamaños de arreglos.

¿Te gustó este artículo?

¡Considera suscribirte a nuestro feed!

Sobre Camilo Sperberg

Es Ingeniero Informático especializado en seguridad y PHP. En su tiempo libre le gusta estudiar nuevas técnicas de programación y escribir. Además, es amigo de todo ser viviente y cree que la tecnocracia es la mejor forma de política.
Archivado en: PHP, 379 vistas Deja un comentario
Comentarios (0) Trackbars (0)

Aún sin comentarios.


Deja un comentario


Aún sin trackbacks.