<?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>CakePHP Brasil &#187; benchmark</title>
	<atom:link href="http://blog.cakephp-brasil.org/tag/benchmark/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.cakephp-brasil.org</link>
	<description>O blog público para desenvolvedores CakePHP.</description>
	<lastBuildDate>Tue, 06 Sep 2011 04:29:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Benchmarks entre frameworks PHP</title>
		<link>http://blog.cakephp-brasil.org/2008/12/25/benchmarks-entre-frameworks-php/</link>
		<comments>http://blog.cakephp-brasil.org/2008/12/25/benchmarks-entre-frameworks-php/#comments</comments>
		<pubDate>Thu, 25 Dec 2008 18:40:43 +0000</pubDate>
		<dc:creator>Juan Basso</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[code igniter]]></category>
		<category><![CDATA[comparação]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://blog.cakephp-brasil.org/?p=76</guid>
		<description><![CDATA[Pessoal,
 
Natal é legal para trocar presentes, unir família e tudo mais, mas isso dura algumas horas, nas demais ficamos sem ter o que fazer, até mesmo porque o comércio não abre. Com isso, resolvi fazer alguns testes nos principais frameworks PHP que estão no mercado: CakePHP, Code Igniter, Symfony, Yii e Zend Framework.
Todos os benchmarks [...]]]></description>
			<content:encoded><![CDATA[<p>Pessoal,</p>
<p> </p>
<p>Natal é legal para trocar presentes, unir família e tudo mais, mas isso dura algumas horas, nas demais ficamos sem ter o que fazer, até mesmo porque o comércio não abre. Com isso, resolvi fazer alguns testes nos principais frameworks PHP que estão no mercado: <a href="http://www.cakephp.org" target="_blank">CakePHP</a>, <a href="http://codeigniter.com/" target="_blank">Code Igniter</a>, <a href="http://www.symfony-project.org/" target="_blank">Symfony</a>, <a href="http://www.yiiframework.com/" target="_blank">Yii</a> e <a href="http://framework.zend.com/" target="_blank">Zend Framework</a>.</p>
<p>Todos os benchmarks que eu vejo pela internet são de um simples hello world, que às vezes não utilizam o framework como indicado e acaba desvirtuando um pouco. Além disso, muitos testam somente a versão estável, deixando pra lá algumas versões mais &#8220;quentes&#8221;, como no caso do CakePHP 1.2. Então resolvi mudar! Fiz um teste com o famoso Hello World, e outros dois: um acessando o banco de dados e lendo 10 registros e o mesmo código lendo 1000 registros. Assim, aproxima um pouco da realidade do desenvolvimento, pois não desenvolvemos Hello Worlds, mas sim acesso a banco, uso de MVC (completo e não como os exemplos que não há view!). Não testei as funcionalidades em si de cada framework como cache, ACL, componentes, etc, detive-me ao básico, acessar o banco e mostrar um dos campos.</p>
<p>Bem, vamos começar falando da máquina de testes. Estava rodando num Debian Etch, com processador Intel Xeon 2.66GHz, 256MB de RAM. Esta máquina é um servidor de produção que é vendido pela <a href="http://www.virtuaserver.com.br" target="_blank">VirtuaServer</a>. Ou seja, tentei fazer o teste num servidor que usamos na prática e não numa máquina local de qualquer desenvolvedor. Nesta máquina a versão do Apache é a 2.2.3, PHP 5.2.0 e MySQL 5.0.32. Nenhuma extensão de cache/performance (APC, Memcache, etc) está habilitada.</p>
<p>O desenvolvimento da aplicação eu fiz me baseando na documentação de cada framework e não a partir de exemplos prontos, pois queria fazer seguindo a lógica dos desenvolvedores de cada framework. Tentei deixar o mais próximo do modo de produção (desabilitando debugs, etc).</p>
<p>Vamos aos resultados, começando pelo famoso Hello World:</p>
<p><img class="aligncenter" title="Hello World" src="http://chart.apis.google.com/chart?cht=bhg&amp;chs=600x260&amp;chds=1,1700,1,1700&amp;chd=t:425,433,1480,325,1622,495|487,432,1598,345,1571,495&amp;chco=1410aa,aa143c&amp;chtt=Hello+World&amp;chdl=10+concorrências|100+concorrências&amp;chxt=x,y&amp;chxl=0:|0|340|680|1020|1360|1700|1:|Zend 1.7.2|Yii 1.0.0|Symfony 1.2.1|CodeIgniter 1.7.0|CakePHP 1.2 RC4|CakePHP 1.1.20&amp;chbh=10,3,10" alt="" width="600" height="260" /></p>
<p>O eixo Y representa o número de requisições completadas após 30 segundos de testes. Usei a ferramenta &#8220;<a href="http://httpd.apache.org/docs/1.3/programs/ab.html" target="_blank">ab</a>&#8221; para fazer os testes (parâmetros: -t 30 -c 10 ou -c 100. Isso significa que testei cada framework por 30 segundos, com 10 ou 100 requisições em paralelo).</p>
<p>Como podem ver, Yii e CodeIgniter apresentaram excelentes resultados, enquanto os demais ficaram próximos. Alguns poderiam dizer  que o CakePHP apresenta resultados inferiores por manter suporte ao PHP4, o que limita algumas coisas, mas lembro que o CodeIgniter também suporta o PHP4 e apresentou resultados surpreendentes.</p>
<p>PS: Fiz as aplicações antes de iniciar todos os testes, ou seja, a parte de banco de dados já estava configurada até para fazer o Hello World, então caberia a aplicação conectar/carregar &#8220;drivers&#8221; ou não&#8230;</p>
<p>Ok, agora vamos aos resultados dos testes dos frameworks acessando a base de dados e mostrando 10 registros:</p>
<p style="text-align: center; "><img class="aligncenter" title="Acessando 10 registros no banco de dados" src="http://chart.apis.google.com/chart?cht=bhg&amp;chs=600x260&amp;chds=1,1700,1,1700&amp;chd=t:483,302,966,319,836,441|467,293,991,312,791,374&amp;chco=1410aa,aa143c&amp;chtt=Acesso+Banco+de+dados|10+registros&amp;chdl=10+concorrências|100+concorrências&amp;chxt=x,y&amp;chxl=0:|0|340|680|1020|1360|1700|1:|Zend 1.7.2|Yii 1.0.0|Symfony 1.2.1|CodeIgniter 1.7.0|CakePHP 1.2 RC4|CakePHP 1.1.20&amp;chbh=10,3,10" alt="" width="600" height="260" /></p>
<p>Novamente Yii e CodeIgniter se sobressaindo&#8230; Porém, vejam que o CakePHP estável (1.1) obteve melhores resultados que o CakePHP 1.2 e mais, o CakePHP 1.2 obteve o pior resultados dos pesquisados.</p>
<p>Outra coisa interessante que podemos notar é que o CodeIgniter tem uma performance melhor com mais requisições em paralelo, sendo mais interessante para sites de grande porte, como portais que tem bastante acesso.</p>
<p>E agora o último teste: acesso ao banco com 1000 registros. A idéia deste teste é tentar visualizar se o framework tem um overhead grande por causa de registros ou por causa da pesquisa. Se pensarmos, a pesquisa é a mesma, a quantidade de registros retornados é que mudará, então é neste ponto que vamos notar as diferenças.</p>
<p style="text-align: center; "><img class="aligncenter" title="Acessando 1000 registros no banco de dados" src="http://chart.apis.google.com/chart?cht=bhg&amp;chs=600x260&amp;chds=1,1700,1,1700&amp;chd=t:259,243,787,223,490,402|254,244,754,230,497,398&amp;chco=1410aa,aa143c&amp;chtt=Acesso+Banco+de+dados|1000+registros&amp;chdl=10+concorrências|100+concorrências&amp;chxt=x,y&amp;chxl=0:|0|340|680|1020|1360|1700|1:|Zend 1.7.2|Yii 1.0.0|Symfony 1.2.1|CodeIgniter 1.7.0|CakePHP 1.2 RC4|CakePHP 1.1.20&amp;chbh=10,3,10" alt="" width="600" height="260" /></p>
<p style="text-align: left;">CodeIgniter novamente se destacando e ainda deixando o Yii mais distante que nos demais testes. Nota-se também que todos têm um overhead grande sobre os registros retornados no banco, pois diminuíram muito sua performance. O CakePHP 1.2 reduziu pouco, o que é interessante.</p>
<p style="text-align: left;">Vale ressaltar que o teste com 1000 registros não é tão usado na prática, pois uma página com 1000 registros pro usuário ler é um tanto quanto chato. Normalmente nestes casos há paginação. Exemplos práticos que vejo disto é na geração de relatório ou gráficos, mas que são pontos isolados e não tão usuais.</p>
<p style="text-align: left;">Alguns comentários sobre os desenvolvimentos das aplicações de teste:</p>
<ul>
<li>Do CakePHP eu não posso falar nada, pois já trabalho com ele a mais de dois anos. Os demais, desconhecia quase que totalmente;</li>
<li>O Zend Framework eu tive um trabalho imenso para conseguir fazer o banco de dados funcionar. Na documentação deles eles falaram várias coisas que podem ser feitas, mas não dizem a básica: aonde vão os arquivos;</li>
<li>No Zend eles recomendam que as requisições que só vão retornar textos simples seja feito no controller, por exemplo, na action do controller você coloca um die ou exit. Eu acho que isso quebra o MVC e em grandes projetos fica uma salada de fruta;</li>
<li>Ainda no Zend eles recomendam que os arquivos que não são de view (não teham HTML) você não feche a tag do PHP (?&gt;), assim evita que fiquem linhas em branco no arquivo e dê os famosos erros de não conseguir escrever no header. Ok, isso é legal, mas não fechar as tags eu acho que é amadorismo. Se o cara fechou e deixou uma linha em branco, é desatenção e deve ser corrigido e não contornado.</li>
<li>O Symfony eu não sei direito tudo que ele gerou, sei que eu executava alguns comandos (indicados na documentação) e ele fazia as coisas acontecerem. Não encontrei na documentação sobre a lógica e como desenvolver manualmente&#8230;</li>
<li>No Symfony, também tive problema em configurar o banco de dados, pois na documentação estava errada, mas em algumas pesquisas do Google eu achei;</li>
<li>O Yii parece fácil de usar. Ele tem certas similaridades com o CakePHP (exceto na performance, como foi visto);</li>
<li>Code Igniter também foi tranqüilo o desenvolvimento. A estrutura de diretórios é similar a do CakePHP, facilitando um pouco.</li>
</ul>
<p>Minhas opiniões quanto os resultados:</p>
<ul>
<li>CakePHP, Yii e CodeIgniter são fáceis de desenvolver, tem uma boa organização e estruturação, ficando legíveis e bons para se trabalhar em equipes diversificadas;</li>
<li>A documentação do Zend e Symfony são meio obscuras para &#8220;dummies&#8221;, tendo que quebrar um pouco a cabeça para conseguir fazer coisas simples (como o acesso ao banco).  Para quem está começando, acho que isso é um tanto quanto chato e desestimulante&#8230;</li>
<li>Yii e CodeIgniter parecem ter bom desempenho na prática, porém desconheço dos recursos e de como é a forma de desenvolvimento. Temos que ver se eles não são muito amarrados aos recursos internos e não dão suporte a integração com outras aplicações/componentes.  Entretanto, se eu fosse começar um desenvolvimento hoje, estudaria um pouco mais esses dois;</li>
<li>Yii é focado para web 2.0 e trabalha com <a href="http://jquery.com" target="_blank">jQuery</a> (que é a onda do momento em JavaScript). Interessante&#8230; Acho que se ele incorporar algumas funcionalidades mais comerciais (testes automatizados, etc) ele terá futuro promissor e não será um fogo de palha;</li>
<li>O CakePHP ainda parece o mais &#8220;potente&#8221; do mercado e tem uma boa visão comercial. Enquanto que a maioria se preocupa em fazer site &#8220;legal&#8221;, o CakePHP dá essa possibilidade e ao mesmo tempo oferece um suporte a desenvolvimento para empresas, com facilidades para desenvolvimento utilizando métodos ágeis, testes automatizados, etc.</li>
</ul>
<p>Bem, acho que é isso. Não vou largar do CakePHP, mas não custa dar uma estudada mais a fundo nos outros.</p>
<p>Caso alguém tenha alguma sugestão de testes a fazer, comente! Pois vou deixar minha suite de testes montada para quando sair novas versões fazer a comparação.</p>
<p>Caso queiram ver os testes mais detalhados, podem acessar os <a href="http://www.cakephp-brasil.org/benchmarks/resultados/final.html" target="_blank">últimos resultados dos testes</a>. Neste site também está disponível o resultado mais detalhado de cada teste, inclusive os números.</p>
<p> </p>
<p>Abraços.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cakephp-brasil.org/2008/12/25/benchmarks-entre-frameworks-php/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Otimizando códigos no PHP</title>
		<link>http://blog.cakephp-brasil.org/2008/05/25/otimizando-codigos-no-php/</link>
		<comments>http://blog.cakephp-brasil.org/2008/05/25/otimizando-codigos-no-php/#comments</comments>
		<pubDate>Mon, 26 May 2008 02:46:43 +0000</pubDate>
		<dc:creator>Juan Basso</dc:creator>
				<category><![CDATA[Outros]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[otimização]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.cakephp-brasil.org/?p=23</guid>
		<description><![CDATA[Este post não é sobre CakePHP diretamente, mas pode influenciar no modo de programarmos no cake.
Olhando alguns sites de otimização, benchmark, entre outros, vi que há algumas formas de otimizarmos os códigos sem grandes alterações, mas que podem melhorar a performance. São elas:
1) Aspas com variáveis
1.1) Aspas duplas VS aspas simples
Utilizar uma string com aspas [...]]]></description>
			<content:encoded><![CDATA[<p>Este post não é sobre CakePHP diretamente, mas pode influenciar no modo de programarmos no cake.</p>
<p>Olhando alguns sites de otimização, benchmark, entre outros, vi que há algumas formas de otimizarmos os códigos sem grandes alterações, mas que podem melhorar a performance. São elas:</p>
<p>1) Aspas com variáveis</p>
<p>1.1) Aspas duplas VS aspas simples</p>
<p>Utilizar uma string com aspas simples é ligeiramente mais rápido que utilizar aspas duplas pelo fato da necessidade de interpretar varáveis (com aspas simples ele interpreta variáveis). Exemplo:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p23code18'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2318"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p23code18"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'texto qualquer'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Mais rápido</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;texto qualquer&quot;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Mais lento</span></pre></td></tr></table></div>

<p>1.2) Variável em aspas dupla ou concatenando</p>
<p>Concatenar uma variável a uma string é muito mais rápido que colocar a variável dentro de uma string com aspas duplas.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p23code19'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2319"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p23code19"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'texto qualquer '</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$variavel</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">' outro texto'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Quase duas vezes mais rápido</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;texto qualquer <span style="color: #006699; font-weight: bold;">$variavel</span> outro texto&quot;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Bem mais lento</span></pre></td></tr></table></div>

<p>2) echo VS print</p>
<p>Utilizar a função <a href="http://php.net/echo" target="_blank">echo</a> é mais rápida que a função <a href="http://php.net/print" target="_blank">print</a>, pois não retorna nenhum valor. A função <a href="http://php.net/print" target="_blank">print</a> informa se houve mensagem de erro. O uso de <a href="http://php.net/print" target="_blank">print</a> é recomendado só em casos que há necessidade de retorno (o que são poucos na prática). Além disso, é recomendável a utilização vários parâmetros no <a href="http://php.net/echo" target="_blank">echo</a> ao invés de concatenar strings. É opcional o uso de parâmetros nestes comandos, sendo o ideal não utilizar. Exemplo:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p23code20'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2320"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p23code20"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'texto qualquer '</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$variavel</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">' outro texto'</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">print</span> <span style="color: #0000ff;">'texto qualquer '</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$variavel</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">' outro texto'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Mais lento que caso anterior</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'texto qualquer '</span><span style="color: #339933;">,</span> <span style="color: #000088;">$variavel</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">' outro texto'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Note as vírgulas. Este caso é mais rápido que os anteriores</span></pre></td></tr></table></div>

<p>3) Variáveis</p>
<p>3.1) Nomes</p>
<p>Definir variáveis com nomes menores é consideravelmente mais rápido que nome maiores. Exemplo:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p23code21'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2321"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p23code21"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$a</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'texto'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$asdhaisuhniduahsduiash</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'a'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Mais lento que anteiror, consideravelmente</span></pre></td></tr></table></div>

<p>3.2) Atribuições</p>
<p>Em atribuições, várias atribuições são mais rápidas que em atribuições unificadas. Exemplo:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p23code22'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2322"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p23code22"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$a</span><span style="color: #339933;">=</span><span style="color: #000088;">$b</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Mais lento</span>
<span style="color: #000088;">$a</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000088;">$b</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Mais rápido</span></pre></td></tr></table></div>

<p>Usar os operadores +=, -=, /=, *= e .= também aumentam a performance. Exemplo:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p23code23'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2323"><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p23code23"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$var</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'abc'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Mais lento</span>
<span style="color: #000088;">$var</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$var</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'def'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Mais rápido</span>
<span style="color: #000088;">$var</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'def'</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>3.3) [Pré/Pós]-incremento</p>
<p>Preferir o uso de pré-incremento (++$i) ao invés de pós-incremento ($i++), pois aquelas consumem um opcode a menos, visto que o segundo caso o PHP cria uma variável temporária para atribuir o valor e no primeiro caso não. PS: Isto vale apenas para PHP! Nas outras linguagens isto não se aplica.</p>
<p>4) Estruturas condicionais</p>
<p>4.1) if VS switch</p>
<p>Estruturas com if e vários elseif são mais rápidas que a estrutura switch. Exemplo:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p23code24'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2324"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre></td><td class="code" id="p23code24"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// Mais rápido</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$a</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">echo</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$a</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">echo</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">echo</span> <span style="color: #cc66cc;">3</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Mais lento</span>
<span style="color: #b1b100;">switch</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$a</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">case</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">:</span>
    <span style="color: #b1b100;">echo</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">case</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">:</span>
    <span style="color: #b1b100;">echo</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">default</span><span style="color: #339933;">:</span>
    <span style="color: #b1b100;">echo</span> <span style="color: #cc66cc;">3</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>4.2) Operador ternário VS if</p>
<p>Operadores ternários são significativamente mais lentos que if&#8217;s. Exemplo:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p23code25'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2325"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code" id="p23code25"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// Mais lento</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$a</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">1</span> ? <span style="color: #cc66cc;">1</span> <span style="color: #339933;">:</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Mais rápido</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$a</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">echo</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">echo</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>4.3) Operadores de igualdade</p>
<p>Operadores de igualdade com comparação de tipos (===) são consideravelmente mais rápidos que apenas operadores de igualdade (==). Exemplo:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p23code26'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2326"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p23code26"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$a</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'a'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">// Mais lento</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$a</span> <span style="color: #339933;">===</span> <span style="color: #0000ff;">'a'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">// Mais rápido</span></pre></td></tr></table></div>

<p>5) Arrays</p>
<p>5.1) Definição</p>
<p>Definir um array pelos índices é consideravelmente mais rápido que usar o método array(&#8230;). Exemplo:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p23code27'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2327"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p23code27"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$a</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'a'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'b'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Mais lento</span>
<span style="color: #000088;">$a</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'a'</span><span style="color: #339933;">;</span> <span style="color: #000088;">$a</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'b'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Mais rápido</span></pre></td></tr></table></div>

<p>5.2) Leitura</p>
<p>Verificar a existência de um elemento no array é mais rápido que procurá-lo. Exemplo:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p23code28'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2328"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p23code28"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">array_key_exists</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'texto'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$arr</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Mais lento</span>
<span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$arr</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'texto'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Mais rápido</span></pre></td></tr></table></div>

<p>PS: Se o valor do campo pode ser null, isset irá retornar false neste caso. Portanto, tome cuidado com isto.</p>
<p>6) Arquivos</p>
<p>Usar a função <a href="http://php.net/file_get_contents" target="_blank">file_get_contents</a>() é ligeiramente mais rápida que utilizar a função <a href="http://php.net/file" target="_blank">file</a>(), porém é mais lenta que utilizar <a href="http://php.net/fopen" target="_blank">fopen</a>() com <a href="http://php.net/fread" target="_blank">fread</a>(). Exemplo:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p23code29'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2329"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code" id="p23code29"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// Mais lento</span>
<span style="color: #000088;">$arquivo</span> <span style="color: #339933;">=</span> <span style="color: #990000;">file</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'arquivo.txt'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Retorna array</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Pouco mais rápido que anterior</span>
<span style="color: #000088;">$arquivo</span> <span style="color: #339933;">=</span> <span style="color: #990000;">file_get_contents</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'arquivo.txt'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Retorna string</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Mais rápido, significativamente</span>
<span style="color: #000088;">$f</span> <span style="color: #339933;">=</span> <span style="color: #990000;">fopen</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'arquivo.txt'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'r'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$arquivo</span> <span style="color: #339933;">=</span> <span style="color: #990000;">fread</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$f</span><span style="color: #339933;">,</span> <span style="color: #990000;">filesize</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'arquivo.txt'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">fclose</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$f</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>7) Buscas e validações</p>
<p>7.1) Substring</p>
<p>Ao buscar substrings, é preferível usar, na ordem, <a href="http://php.net/strpos" target="_blank">strpos</a>(), depois <a href="http://php.net/preg_match" target="_blank">preg_match</a>() e por último <a href="http://php.net/ereg" target="_blank">ereg</a>(). A <a href="http://php.net/strpos" target="_blank">strpos</a>, quando é possível de ser utilizada, tem uma eficiência muito superior as demais.</p>
<p>7.2) Números</p>
<p>Caso necessite verificar se um texto ou variável contém apenas números, é preferivel utilizar a função <a href="http://php.net/ctype_digit" target="_blank">ctype_digit</a>($var) ao invés de <a href="http://php.net/preg_match" target="_blank">preg_match</a>(&#8216;/[0-9]*/&#8217;, $var).</p>
<p>8 ) Outras otimizações</p>
<p>8.1) Funções de controle de saída</p>
<p>Uso de Usar o método <a href="http://php.net/ob_start" target="_blank">ob_start</a>() reduz de 5 a 15% o tempo de execução.</p>
<p>8.2) Evitando repetição de funções</p>
<p>Definir uma variável com um valor que vai ser usado diversas vezes aumenta a performance consideravalmente. Exemplo:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p23code30'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p23code30"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #000088;">$max</span><span style="color: #339933;">=</span><span style="color: #990000;">count</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$arr</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">&lt;</span><span style="color: #000088;">$max</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">// Mais rápido</span>
<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">&lt;</span>count<span style="color: #009900;">&#40;</span><span style="color: #000088;">$arr</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">// Mais lento</span></pre></td></tr></table></div>

<p>8.3) Processamento não necessário</p>
<p>Blocos de textos fixos é preferível que seja impresso fora do PHP, por exemplo:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p23code31'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2331"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p23code31"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$var</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
Texto adicional grande</pre></td></tr></table></div>

<p>É preferível do que:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p23code32'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2332"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p23code32"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$var</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'Texto adicional grande'</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>8.4) Evitar o uso de funções aliases e automágicas</p>
<p>Funções aliases são as funções que significam a mesma coisa que outras. Por exemplo, sizeof é sinônimo (alias) de count. Veja a lista completa de funções aliases <a href="http://www.php.net/manual/pt_BR/aliases.php" target="_blank">aqui</a>.</p>
<p>Funções automágicas são aquelas definidas pelo PHP: __get, __set, __autoload, __call, __sleep, &#8230;</p>
<p>8.5) Evitar uso de funções abrangentes</p>
<p>Preferir a função <a href="http://php.net/empty" target="_blank">empty</a>() ao invés de <a href="http://php.net/count" target="_blank">count</a>(), assim como <code>isset($var{X})</code> ao invés de <code>strlen($var) &lt; X</code>.</p>
<p>8.6) Declare os métodos estáticos</p>
<p>Definir os métodos estáticos com a palavra static deixa seu código até 4 vezes mais rápido que o não declarado como estático. Exemplo:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p23code33'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2333"><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p23code33"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> XXX <span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> a<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #b1b100;">return</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
  <span style="color: #000000; font-weight: bold;">public</span> static fuction b<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #b1b100;">return</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
XXX<span style="color: #339933;">::</span><span style="color: #004000;">a</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Mais lento</span>
XXX<span style="color: #339933;">::</span><span style="color: #004000;">b</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Até 4 vezes mais rápido</span></pre></td></tr></table></div>

<p>8.7) Evitar o operador @</p>
<p>Ao invés de usar o operador @, desativar a exibição de erros. Exemplo:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p23code34'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2334"><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p23code34"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// Mais lento</span>
<span style="color: #339933;">@</span>acao<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Mais rápido</span>
<span style="color: #000088;">$old</span> <span style="color: #339933;">=</span> <span style="color: #990000;">ini_set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'error_reporting'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
acao<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">ini_set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'error_reporting'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$old</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>9) Extra-código</p>
<p>Se você tem acesso ao servidor web, é recomendavel a utilização de otimizadores e/ou cachers, como o <a href="http://www.zend.com/en/products/guard/optimizer/" target="_blank">Zend Optimizer</a>, <a href="http://www.php.net/apc" target="_blank">APC</a>, <a href="http://eaccelerator.net/" target="_blank">eAccelerator</a>, <a href="http://www.php.net/memcache" target="_blank">memcache</a>, etc.</p>
<p>Outra alternativa que pode ser usada em conjunto, é usar o callback &#8216;<a href="http://php.net/ob_gzhandler" target="_blank">ob_gzhandler</a>&#8216; na função <a href="http://php.net/ob_start" target="_blank">ob_start</a>() OU ativar a configuração <a href="http://www.php.net/manual/pt_BR/zlib.configuration.php#ini.zlib.output-compression" target="_blank">zlib.output_compression</a> no php.ini. Isso faz com que depois de gerado o código HTML, ele seja compactado e enviado para o cliente, reduzindo a quantidade de tráfego na rede.</p>
<p>Fontes de referência:<br />
<a href="https://trac.cakephp.org/ticket/2764" target="_blank">https://trac.cakephp.org/ticket/2764</a><br />
<a href="http://phplens.com/lens/php-book/optimizing-debugging-php.php" target="_blank">http://phplens.com/lens/php-book/optimizing-debugging-php.php</a><br />
<a href="http://benchmark.nophia.de/benchmarks.html" target="_blank">http://benchmark.nophia.de/benchmarks.html</a><br />
<a href="http://www.estvideo.com/dew/pages/phpbench/" target="_blank">http://www.estvideo.com/dew/pages/phpbench/</a><br />
<a href="http://ilia.ws/archives/12-PHP-Optimization-Tricks.html" target="_blank">http://ilia.ws/archives/12-PHP-Optimization-Tricks.html</a><br />
<a href="http://www.vulgarisation-informatique.com/optimiser-php.php" target="_blank">http://www.vulgarisation-informatique.com/optimiser-php.php</a><br />
<a href="http://www.moskalyuk.com/blog/php-optimization-tips/1272" target="_blank">http://www.moskalyuk.com/blog/php-optimization-tips/1272</a><br />
<a href="http://www.ilia.ws/files/zend_performance.pdf" target="_blank">http://www.ilia.ws/files/zend_performance.pdf</a><br />
<a href="http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40" target="_blank">http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cakephp-brasil.org/2008/05/25/otimizando-codigos-no-php/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>

