<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>mjcarrascosa.com &#187; optimización</title>
	<atom:link href="http://mjcarrascosa.com/tag/optimizacion/feed/" rel="self" type="application/rss+xml" />
	<link>http://mjcarrascosa.com</link>
	<description>Desarrollo web y otras hierbas</description>
	<lastBuildDate>Fri, 08 Jul 2011 07:41:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Mejorando el rendimiento de JavaScript</title>
		<link>http://mjcarrascosa.com/mejorando-el-rendimiento-de-javascript/</link>
		<comments>http://mjcarrascosa.com/mejorando-el-rendimiento-de-javascript/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 10:52:28 +0000</pubDate>
		<dc:creator>Manuel Jesús Carrascosa de la Blanca</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[optimización]]></category>
		<category><![CDATA[rendimiento]]></category>

		<guid isPermaLink="false">http://mjcarrascosa.com/?p=408</guid>
		<description><![CDATA[Via anieto2k me encuentro con una presentación de Thomas Fuch, creador de Script.aculo.ous, llamada &#8220;Extreme JavaScript Performance&#8221;, 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 [...]]]></description>
			<content:encoded><![CDATA[<p>Via <a title="Rendimiento extremo de JavaScript" href="http://www.anieto2k.com/2009/11/10/rendimiento-extremo-de-javascript/">anieto2k</a> me encuentro con una presentación de Thomas Fuch, creador de <a title="Script.aculo.us" href="http://script.aculo.us/">Script.aculo.ous</a>, llamada <a title="Extreme JavaScript Performance" href="http://www.slideshare.net/madrobby/extreme-javascript-performance">&#8220;Extreme JavaScript Performance&#8221;</a>, donde da una serie de recomendaciones, que podemos y que no debemos,  para mejorar el rendimiento de nuestros scripts.</p>
<p>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 &amp;&amp; (AND) y || (OR).  Una lectura más que recomendada para mejorar el tiempo de ejecución de los scripts.</p>
]]></content:encoded>
			<wfw:commentRss>http://mjcarrascosa.com/mejorando-el-rendimiento-de-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>InnerHTML contra DOM. ¿Cuál se ejecuta más rápido?</title>
		<link>http://mjcarrascosa.com/innerhtml-contra-dom-%c2%bfcual-se-ejecuta-mas-rapido/</link>
		<comments>http://mjcarrascosa.com/innerhtml-contra-dom-%c2%bfcual-se-ejecuta-mas-rapido/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 00:06:46 +0000</pubDate>
		<dc:creator>Manuel Jesús Carrascosa de la Blanca</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[innerHTML]]></category>
		<category><![CDATA[optimización]]></category>

		<guid isPermaLink="false">http://mjcarrascosa.com/?p=329</guid>
		<description><![CDATA[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: &#8220;Benchmark &#8211; W3C DOM vs. innerHTML&#8221;. Pues si, como era de esperar innerHTML es más [...]]]></description>
			<content:encoded><![CDATA[<p>A la hora de añadir contenido de forma dinámica a nuestras páginas tenemos dos opciones, la niña bonita <em>DOM</em> o el cutre y desagradable <em>innerHTML</em>. Pero, ¿cuál de los dos se ejecuta más rápido? La respuesta está en esta página: <a title="Benchmark - W3C DOM vs. innerHTML" href="http://www.quirksmode.org/dom/innerhtml.html">&#8220;Benchmark &#8211; W3C DOM vs. innerHTML&#8221;</a>. Pues si, como era de esperar <em>innerHTML</em> es más rápido que <em>DOM</em>. Por supuesto esto no quiere decir que siempre haya que usar la propiedad <em>innerHTML</em>, elegir uno u otro método dependerá de muchos factores. Este dato nos sirve para poder inclinar la balanza hacia la propiedad <em>innerHTML</em> en según que casos.</p>
<p>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.</p>
]]></content:encoded>
			<wfw:commentRss>http://mjcarrascosa.com/innerhtml-contra-dom-%c2%bfcual-se-ejecuta-mas-rapido/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>¿Cuál es el mejor método para recorrer un array en PHP?</title>
		<link>http://mjcarrascosa.com/%c2%bfcual-es-el-mejor-metodo-para-recorrer-un-array-en-php/</link>
		<comments>http://mjcarrascosa.com/%c2%bfcual-es-el-mejor-metodo-para-recorrer-un-array-en-php/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 20:00:34 +0000</pubDate>
		<dc:creator>Manuel Jesús Carrascosa de la Blanca</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[optimización]]></category>
		<category><![CDATA[optimización bucles]]></category>

		<guid isPermaLink="false">http://mjcarrascosa.com/?p=220</guid>
		<description><![CDATA[Hace poco leí este interesante artículo: &#8220;for reverso para grandes iteraciones en JavaScript&#8221;. 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: Usando la estructura foreach. [...]]]></description>
			<content:encoded><![CDATA[<p>Hace poco leí este interesante artículo: <a title="for reverso para grandes iteraciones en JavaScript" href="http://www.anieto2k.com/2009/05/28/for-reverso-para-grandes-interaciones-en-javascript/">&#8220;for reverso para grandes iteraciones en JavaScript&#8221;</a>. 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:</p>
<ol>
<li>Usando la estructura <strong>foreach</strong>.</li>
<li>Usando la estructura <strong>foreach</strong> y <strong>obteniendo la clave</strong>.</li>
<li>Usando una iteración <strong>for ascendente</strong>.</li>
<li>Usando una iteración <strong>for ascendente</strong> pero <strong>almacenando el tamaño del array</strong> en una variable.</li>
<li>Usando una iteración <strong>for descendente</strong>.</li>
</ol>
<p>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):</p>
<pre class="brush:php">// Test Nº 1
$total = 0;
foreach ($a as $item)
{
    $total += $item;
}

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

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

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

// Test Nº 5
$total = 0;
for($i = count($a) -1; $i &gt;= 0; $i--)
{
    $total += $a[$i];
}
</pre>
<p>Y los resultados han sido los siguientes:</p>
<table border="0">
<tbody>
<tr>
<th>Test</th>
<th>Tiempo de ejecución</th>
</tr>
<tr>
<td>Nº 1</td>
<td align="right">29.645 ms</td>
</tr>
<tr>
<td>Nº 2</td>
<td align="right">38.315 ms</td>
</tr>
<tr>
<td>Nº 3</td>
<td align="right">129.727 ms</td>
</tr>
<tr>
<td>Nº 4</td>
<td align="right">35.427 ms</td>
</tr>
<tr>
<td>Nº 5</td>
<td align="right">43.789 ms</td>
</tr>
</tbody>
</table>
<p>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 <strong>foreach</strong>, aunque no presenta mucha diferencia con los bucles <strong>for</strong> cuando no se llama a la función <strong>count</strong>.</p>
<p>Personalmente para recorrer un array yo prefiero usar la construcción <strong>foreach</strong>, 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 <strong>for</strong> sin llamar a ninguna función.</p>
<p>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.</p>
]]></content:encoded>
			<wfw:commentRss>http://mjcarrascosa.com/%c2%bfcual-es-el-mejor-metodo-para-recorrer-un-array-en-php/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

