Posts Tagged ‘optimización’

noviembre 12, 2009 0

Mejorando el rendimiento de JavaScript

By in JavaScript

Via anieto2k me encuentro con una presentación de Thomas Fuch, creador de Script.aculo.ous, llamada “Extreme JavaScript Performance”, donde da una serie de recomendaciones, que podemos y que no debemos,  para mejorar el rendimiento de nuestros scripts.

En la presentación se comparan los tiempos que se tarda, en distintos navegadores, en realizar diversas tareas comunes. También se presentan algunas curiosidades del lenguaje, como la evaluación de los operadores && (AND) y || (OR).  Una lectura más que recomendada para mejorar el tiempo de ejecución de los scripts.

Comparte esta entrada:
Delicious Digg Google Technorati Menéame Fresqui Reddit Facebook Twitter Yahoo! Buzz MySpace Email BarraPunto

Tags: , ,

septiembre 9, 2009 1

InnerHTML contra DOM. ¿Cuál se ejecuta más rápido?

By in JavaScript

A la hora de añadir contenido de forma dinámica a nuestras páginas tenemos dos opciones, la niña bonita DOM o el cutre y desagradable innerHTML. Pero, ¿cuál de los dos se ejecuta más rápido? La respuesta está en esta página: “Benchmark – W3C DOM vs. innerHTML”. Pues si, como era de esperar innerHTML es más rápido que DOM. Por supuesto esto no quiere decir que siempre haya que usar la propiedad innerHTML, elegir uno u otro método dependerá de muchos factores. Este dato nos sirve para poder inclinar la balanza hacia la propiedad innerHTML en según que casos.

P.D.: Últimamente estoy escribiendo con menos asiduidad de la que me gustaría. Varios proyectos profesionales y personales me están quitando más tiempo del que me gustaría, pero espero en breve poder dedicarle al blog el tiempo que me gustaría.

Comparte esta entrada:
Delicious Digg Google Technorati Menéame Fresqui Reddit Facebook Twitter Yahoo! Buzz MySpace Email BarraPunto

Tags: , , ,

junio 22, 2009 10

¿Cuál es el mejor método para recorrer un array en PHP?

By in PHP

Hace poco leí este interesante artículo: “for reverso para grandes iteraciones en JavaScript”. Hoy, mientras viajaba en metro de camino a casa, he pensado que sería interesante ver si esto ocurre también PHP. Para ello he usado la herramienta que comenté ayer (PHP Quick Profiler). Para ello he realizado cinco test:

  1. Usando la estructura foreach.
  2. Usando la estructura foreach y obteniendo la clave.
  3. Usando una iteración for ascendente.
  4. Usando una iteración for ascendente pero almacenando el tamaño del array en una variable.
  5. Usando una iteración for descendente.

La prueba realizada ha sido obtener el sumatorio de los elementos del array. El array tiene un tamaño de 300.000 elementos, obtenidos de forma aleatoria previamente a las pruebas. El código de cada una de las pruebas es el siguiente (el código del tercer se ha corregido gracias al comentario de SERGI):

// Test Nº 1
$total = 0;
foreach ($a as $item)
{
    $total += $item;
}

// Test Nº 2
$total = 0;
foreach ($a as $key => $item)
{
    $total += $item;
}

// Test Nº 3
$total = 0;
for($i = 0; $i < count($a); $i++)
{
    $total += $a[$i];
}

// Test Nº 4
$total = 0;
$fin = count($a);
for($i = 0; $i < $fin; $i++)
{
    $total += $a[$i];
}

// Test Nº 5
$total = 0;
for($i = count($a) -1; $i >= 0; $i--)
{
    $total += $a[$i];
}

Y los resultados han sido los siguientes:

Test Tiempo de ejecución
Nº 1 29.645 ms
Nº 2 38.315 ms
Nº 3 129.727 ms
Nº 4 35.427 ms
Nº 5 43.789 ms

Como se puede apreciar en el caso de PHP lo más rápido a la hora de recorrer un array parece que es usar la estructura foreach, aunque no presenta mucha diferencia con los bucles for cuando no se llama a la función count.

Personalmente para recorrer un array yo prefiero usar la construcción foreach, creo que así el código queda mucho más claro, aunque a raíz de esta pequeña prueba lo importante es realizar comparaciones simples en el for sin llamar a ninguna función.

Estas pruebas son mejorables, por ejemplo realizando varias pruebas y en un entorno más controlado que el equipo que he usado, pero creo que nos puede dar un breve indicio de como optimizar mejor nuestro código en cosas a las que no prestamos la suficiente atención.

Comparte esta entrada:
Delicious Digg Google Technorati Menéame Fresqui Reddit Facebook Twitter Yahoo! Buzz MySpace Email BarraPunto

Tags: , ,