Otimização vs PHP, PHP
- 13/09/2008
Otimização de códigos PHP (Parte 1)
Bom pessoal, esta é a primeira parte de alguns posts relacionados a otimização de códigos PHP.
Como PHP é uma linguagem muito facil de se aprender, o número de pessoas que programam é muito grande… Ai, quando a pessoa já aprendeu a cadastrar dados no banco de dados ela ja sai fazendo freelas. Só que a qualidade do código é muito baixa, por este motivo, o PHP tem sido de certa forma ”difamado” e mau visto. Para muitas pessoas, PHP é sinônimo de gambiarra!
Com estes posts, pretendo mostrar que tem como fazer códigos com qualidade e otimizados.
(1) – echo é mais rápido do que o print.
Claro que a diferença é mínima. Pois o print() imprime um valor na tela e retorna um valor inteiro(1 ou 0) enquanto o echo apenas imprime o valor na tela.
Por exemplo, com print você pode fazer assim:
-
<?
-
?>
(2) – Defina o tamanho dos seus loops antes, evite usar funções como count() e sizeof() na declaração do loop. Veja um exemplo abaixo:
Como NÃO FAZER:
-
<?
-
echo ‘Gosto de:’;
-
}
-
?>
Perceba que neste caso, a função COUNT() será chamada TODAS as vezes que o loop ocorrer (pois como você já sabe, a linha 4 será executada em todas as voltas do loop). Mas, como apenas precisamos do tamanho do array, iremos declarar uma variável que receberá esta informação.
Veja abaixo o modo CORRETO:
-
<?
-
echo ‘Gosto de:’;
-
for($i=0; $i <= $tamanho_do_array; $i++){
-
}
-
?>
Perceba que na linha 3 declaramos uma variável que vai conter o tamanho do array, para ser usada na linha 5.
(3) – Sempre que possível, libere variáveis que não serão mais usadas, principalmente array’s.
O PHP dispõe de uma função que é encarregada de APAGAR variáveis, veja abaixo como usá-la:
-
<?
-
?>
(4) – Procure utilizar aspas simples para STRINGS.
Quando você usa aspas simples, o PHP não se preocupa em tentar interpretar o que tem dentro da STRING (variáveis e etc…).
Com aspas duplas você pode fazer isso: $texto = “meu texto com uma $variavel.”.
Ou seja, SEMPRE quando tiver aspas duplas, o PHP irá verificar se tem alguma variável para ser interpretada. No caso das aspas simples, ela não interpreta variáveis dentro dela, sendo assim, o PHP gasta menos tempo.
Utilize aspas duplas quando for usar “\n \t” e afins.
(5) – Sempre use caminhos absolutos para informar path’s.
Para informar path de includes e/ou requires, coloque o caminho completo, pois é gasto menos tempo resolvendo os caminhos do sistema operacional.
Utilize $_SERVER['DOCUMENT_ROOT'] para descobrir o caminho absoluto. Veja o exemplo abaixo:
-
<?
-
$caminho_absoluto = $_SERVER[‘DOCUMENT_ROOT’];
-
-
include ($caminho_absoluto.‘/includes/conexao.php’);
-
include ($caminho_absoluto.‘/includes/funcoes.php’);
-
?>
Se mandar imprimir o seguinte: $caminho_absoluto.”/includes/conexao.php”, teríamos como resposta (rodando na minha maquina) o seguinte:
C:/xampp/htdocs/includes/conexao.php
O que esta em vermelho, você nunca vai precisar se preocupar! Pois sempre ele pegará o caminho do servidor.
(6) – Substituição
1) str_replace() é mais rápido que preg_replace(), mas strtr() é aproximadamente 4 vezes mais rápida do que str_replace().
2)
O código acima é mais lento que o código abaixo.
(7) – É mais rápido usar SWITCH do que vários “else if”
O código acima roda mais rápido que o código abaixo
(8) – Nunca use @ para esconder os erros
Nunca, em hipótese alguma utilize o @ para esconder os erros. Este tipo de tratamento de erro é muito lento.
(9) – Acesse índice de arrays com chaves entre aspas
$row[’id’] é aproximadamente 7 vezes mais rápido que $row[id].
(10) – Declare variáveis para incrementos
Incrementar uma variável que já foi inicializada roda aproximadamente 9 vezes mais rápido do que uma variável que não foi incrementada.
Bom, por enquanto é isso… Se você não entendeu alguma coisa, ou não concorda, por favor poste seu comentário para que possamos trocar idéias…
Um grande abraço!


(12 votos, média: 4.25 de 5)

12 Comentários to “Otimização de códigos PHP (Parte 1)”
Do caralho marcelo. Muito bom post!
Uma curiosidade:
Como vc determinou as velocidades para saber que um é x vezes mais rápido que outro?
Por Diego Gomes (10 comments) em 15/09/2008
Que bom que gostou 30!
Tenho googlado e achado mtos blogs que falam sobre isso. Achei um site que mediu da seguinte forma: Faz um for(por exemplo) com 10000000 loops. E dentro deste for eles colocam alguma rotina(usar aspas duplas, depois simples, …). Desta forma, tem como medir quantos segundos(ou milisegundos) o script demorou pra rodar…
No último post, vou colocar todas as fontes da minha pesquisa.
Abração meu filho!!
Por Marcelo Sabadini (101 comments) em 15/09/2008
Muito legal Marcelo.
Tem coisas muito úteis neste post. Parabéns cara
Por Nosbielcs (3 comments) em 30/09/2008
Valeu meu caro…
O legal é que tem coisas que podem ser levadas para outras linguagens…
A parte II ja esta no forno heheheh
Por Marcelo Sabadini (101 comments) em 30/09/2008
Muito bom! algumas coisas eu nao sabia (aspas simples mais rapida, ´ para acessar indice do array)… Essas dicas sao sempre bem vindas.
Abraço!
Por Fabio M. Costa (4 comments) em 08/10/2008
Pois é Fabio… eu tmb nao sabia de muitas coisas. Estou preparando a segunda parte e vou postar as referências. Tem muito mais coisas… decidi colocar só as mais utilizadas mesmo heheheh
Abraços e faleu pela contribuição!
Por Marcelo Sabadini (101 comments) em 08/10/2008
Olá Marcelo, o Mini Curso PHP é super interessante principalmente para quem está iniciando na linguagem, é muito bom poder encontrar pessoas como você que tem boa vontade e gosta do que faz, de ensinar.
Como eu tenho acesso à todas as partes do curso, porque pesquisei mas não abre sequencial e confesso que encontro-me perdido.
Agradeço pela orientação e ótimo trabalho!
Por Sergio Santos (6 comments) em 01/12/2008
Concordo com o começo do seu post: por ser muito fácil e ágil, se não tomar cuidado dá pra fazer muita “caca”.
Nessas horas que uma boa formação em programação faz diferença!
Por Chris Benseler (2 comments) em 29/05/2009
Excelente artigo. Mas cadê a continuação? hehe
Abraço!
Por Paulo (1 comments) em 28/08/2009
Pois é Paulo… estou devendo a continuação =/
Mas estou com uma idéia legal para o POST. Ja estou até com ele em rascunho hehehehe
Abraços!!!
Por Marcelo Sabadini (101 comments) em 12/09/2009
Muito bom o post, esclareceu bastante.
Meus parabéns.
Por Diogo Gêda (1 comments) em 30/03/2010
Valew kara.
Por dimitrikx (1 comments) em 03/07/2010