Há um bom tempo atrás rolou uma discussão na lista do PHPMS sobre um comparativo de performance entre PHP x Python x Ruby x Perl.
Bom, a conclusão que tirei do comparativo foi de que a velocidade de execução é importante, mas mais do que isso, o programador é essencial. No exemplo da thread supracitada, o PHP perdia feio para as outras linguagens, mas olhando para o código escrito em PHP, dava para notar vários erros de uso da linguagem e suas funções (ponto para o Begnini que viu o código antes de todos).
Então a dica de hoje é: estude bem a linguagem. Procure a saber o funcionamento das funções e construções da linguagem, isso é essencial para se tornar um bom programador.
Exemplos de código
//uso comum
for($i = 0; count($var) < 0; $i++)
...
//forma mais adequada
for($i = 0, $c = count($var); $c < 0; ++$i)
...
//outro caso, ao invés de forçar várias verificações
if( $a > 100 )
...
if( $a < 100 )
...
if( $a == 100 )
//use a estrutura adequada
if( $a > 100 )
...
else if( $a < 100 )
...
else //não precisa fazer o último teste
...
// esse último caso que me inspirou a fazer o post
// a pessoa só queria saber se o array $var tava vazio, e para isso contou todos os seus elementos
if ( count($var) > 0 )
...
// enquanto ela poderia ter usado uma verificação direta como
if ( !empty($var) )
Este último caso, que motivou o post foi visto no changelog da versão 1.2.6 do CakePHP. Neste caso o “erro” foi encontrado e corrigido pelo brasileiro Juan Basso neste commit.
O intuito do post não é meter o dedo na cara de ninguém, apenas alertar para situações onde culpamos uma determinada linguagem pelo desempenho de nossa aplicação quando o problema na verdade é o mal uso que estamos fazendo.
Uma resposta em “Dica Rápida – Otimizando código”
Cauan,
Só vi agora seu post. Queria dizer que a otimização é muito importante e no começo do ano eu dei uma ajuda ao core do cake para torná-lo mais rápido. Além deste, houveram outros vários commits (se procurar pelo meu nome como commiter você vai ver), principalmente para a release 1.3. No começo do ano, eu tinha feito alguns testes envolvendo itens básicos e tinha melhorado, em média, 20% em relação ao 1.2. Ou seja, esta versão 1.3 vem recheada com novas gulosemas e precisa deixar menos tempo no forno. 🙂