<?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>CaChi &#187; profiler</title>
	<atom:link href="http://cachi.temiga.org/tag/profiler/feed/" rel="self" type="application/rss+xml" />
	<link>http://cachi.temiga.org</link>
	<description>[ TEMIGA ]</description>
	<lastBuildDate>Mon, 19 Jul 2010 14:10:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>No te confies de todo lo que dice el manual de PHP</title>
		<link>http://cachi.temiga.org/2009/05/17/no_te_confies_de_todo_lo_que_dice_el_manual_de_php/</link>
		<comments>http://cachi.temiga.org/2009/05/17/no_te_confies_de_todo_lo_que_dice_el_manual_de_php/#comments</comments>
		<pubDate>Mon, 18 May 2009 00:37:30 +0000</pubDate>
		<dc:creator>CaChi</dc:creator>
				<category><![CDATA[PHP5]]></category>
		<category><![CDATA[Planeta Linux]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Buenas Prácticas]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[KumbiaPHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[profiler]]></category>

		<guid isPermaLink="false">http://cachi.temiga.org/?p=301</guid>
		<description><![CDATA[Hace unos días haciendo unos benchmark a kumbiaphp framework en comparación con la vieja estructura de directorios de alguna para ver si la nueva estructura directorio genero efectos de rendimientos sobre el framework que seria lo ideal. Bien lo cierto es que cuando se corrió el benchmark los #request/seg no cuadraban y no era lógico]]></description>
			<content:encoded><![CDATA[<p>Hace unos días haciendo unos <a title="benchamrk" href="http://en.wikipedia.org/wiki/Benchmark_(computing)">benchmark</a> a <a title="Sitio web de kumbiaphp framework" href="http://www.kumbiaphp.com">kumbiaphp framework</a> en comparación con la <span style="text-decoration: line-through;">vieja estructura</span> de directorios de alguna para ver si la <a title="KumbiaPHP Avances version 1.0" href="http://www.kumbiaphp.com/blog/2009/04/30/avances_de_kumbiaphp_framework/" target="_blank">nueva estructura directorio</a> genero efectos de rendimientos sobre el framework que seria lo ideal.</p>
<p>Bien lo cierto es que cuando se corrió el benchmark los <strong>#request/seg</strong> no cuadraban y no era lógico ya que la nueva estructura se depuraron ciertas cosas que sobraban, en el benchmark los números obtenidos eran tan locos que la vieja estructura tenia unos 10 #req/seg por encima :-S no era nada normal esto, nos toco recurrir a las <strong><em>buenas prácticas de desarrollo</em></strong> y que ya es una constante dentro del <a title="Equipo de Desarrollo de KumbiaPHP framework" href="http://wiki.kumbiaphp.com/Team_Development_KumbiaPHP_Framework#KumbiaPHP_Team_Developers" target="_blank">Equipo de Desarrollo de kumbiaphp</a> hacer <a title="debug y profiler con xdebug" href="http://cachi.temiga.org/2008/04/08/instalando-xdebug-en-debian-lenny/">debug y profiler con xdebug</a> :-), esto para detectar donde estaban los &#8220;cuellos de botellas&#8221; que nos hacían mas lento que la versión anterior.</p>
<p>El detalle estaba en una función de <a title="PHP" href="http://en.wikipedia.org/wiki/PHP">PHP</a> llamada <a title="php function extract" href="http://es.php.net/manual/es/function.extract.php" target="_blank">extract,</a> dentro de <a title="KumbiaPHP web &amp; app Framework" href="http://www.kumbiaphp.com">kumbiaphp framework</a> se utiliza esta dicha función en el core ya que el framework implementa las <strong><em>variables de instancia</em></strong> (algo muy parecido de <a title="Rails" href="http://en.wikipedia.org/wiki/Ruby_on_Rails">Rails</a>), es decir todo lo que llame en mi controlador <strong><em>$this-&gt;var</em></strong> o sean atributos públicos, en la vista los tengo disponible como <strong><em>$var</em></strong>, volviendo al punto esta funcion nos permite hacer lo antes dicho pero recibe ciertos parámetros uno es unas constantes entre ellas <span class="term"><strong><em>EXTR_OVERWRITE</em></strong> (</span><span class="simpara">Si hay colisión, sobrescribe la variable existente</span><span class="term">) nosotros decidimos sacar la constante porque en la documentación Oficial de PHP dice claro lo siguiente:</span></p>
<blockquote><p><em>Si no se especifica </em><em><tt class="parameter">tipo_extraccion</tt> , se asume que      vale EXTR_OVERWRITE.</em></p></blockquote>
<p>Bien como sabemos el xdebug nos da mucha información y la misma nos decía que el &#8220;cuello de botella&#8221; estaba allí ya que tomamos un profiler de la versión anterior y los tiempos eran totalmente distintos en ese punto. viendo en detalle la función <em><strong>extract </strong></em>decidí olvidar lo que dice el manual de PHP y pasar de forma implícita el tipo de extracción en este caso <span class="term"><strong><em>EXTR_OVERWRITE, </em></strong>una vez hecho el cambio vuelvo a correr el benchmark y como por arte de magia ahora obtengo los resultados esperados la nueva estructura ha causado efecto en velocidad y esta ~10 #req/seg por encima respecto a la <span style="text-decoration: line-through;">vieja estructura</span>.<br />
</span></p>
<p><strong><span class="term">Conclusión.</span></strong></p>
<p><span class="term">Tal como dice el titulo del post no hay que confiarse de lo que dicen algunos manual, ya que pueden ocurrir excepciones como la que comente aqui. En el caso descrito fue detectado este detalle porque se hizo uso de las <em>buenas prácticas</em> de desarrollo y de las herramientas disponibles y el turno fue para una que muchos obvian <a title="Xdebug " href="http://www.xdebug.org">(xdebug)</a>, que si le damos el uso correcto podemos ganar mucho en nuestros desarrollos.</span></p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fcachi.temiga.org%2F2009%2F05%2F17%2Fno_te_confies_de_todo_lo_que_dice_el_manual_de_php%2F&amp;linkname=No%20te%20confies%20de%20todo%20lo%20que%20dice%20el%20manual%20de%20PHP"><img src="http://cachi.temiga.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://cachi.temiga.org/2009/05/17/no_te_confies_de_todo_lo_que_dice_el_manual_de_php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
