Esta pode ser uma pergunta boba, mas como alguém relativamente novo em PHP, estou me perguntando se há algum problema relacionado ao desempenho para abrir e fechar tags PHP com frequência no código de modelo HTML e, em caso afirmativo, quais podem ser as melhores práticas em termos de trabalhar com tags PHP?
Minha pergunta não é sobre a importância / exatidão das tags de fechamento ou sobre qual tipo de código é mais legível do que outro, mas sim sobre como o documento é analisado / executado e que impacto isso pode ter no desempenho.
Para ilustrar, considere os dois extremos a seguir:
Combinação de tags PHP e HTML:
<?php echo
'<tr>
<td>'.$variable1.'</td>
<td>'.$variable2.'</td>
<td>'.$variable3.'</td>
<td>'.$variable4.'</td>
<td>'.$variable5.'</td>
</tr>'
?>
// PHP tag opened once
Separando tags PHP e HTML:
<tr>
<td><?php echo $variable1 ?></td>
<td><?php echo $variable2 ?></td>
<td><?php echo $variable3 ?></td>
<td><?php echo $variable4 ?></td>
<td><?php echo $variable5 ?></td>
</tr>
// PHP tag opened five times
Teria interesse em ouvir algumas opiniões sobre isso, mesmo que seja apenas para saber que não faz diferença.
Obrigado.
Respostas:
3 regras simples para você acertar:
Os problemas de desempenho são muito difíceis de entender. É aconselhável que os novatos não o levem em consideração. Porque eles sempre se impressionam com coisas insignificantes e não conseguem ver coisas realmente importantes. Só por falta de experiência.
O mesmo vale para sua pergunta. Imagine que você vai conseguir alguma diferença. Mesmo grande, digamos, um método é 2 vezes mais rápido. Nossa, 2 vezes! Eu escolhi e otimizei bem meu aplicativo, ele rodará 50% mais rápido agora!
Errado . Não 50%. Você nunca notaria ou mesmo mediria esse aumento de velocidade. Porque você otimizou uma parte que ocupa apenas 0,0001% de todo o tempo de execução do script.
Quanto às grandes tabelas HTML, leva muito tempo para o navegador renderizá-las. Muito mais do que você demorou para gerar.
Profiling é uma palavra-chave no mundo da performance. Qualquer questão relacionada ao desempenho pode ser descartada sem dúvidas se não houver nenhuma palavra "perfil" nela. Ao mesmo tempo, criar perfis não é uma ciência espacial. Estou apenas medindo o tempo de execução de diferentes partes do seu script. Pode ser feito com algum profiler, como xdebug, ou mesmo manualmente, usando
microtime(1)
. E só depois de detectar a parte mais lenta, você pode começar com os testes.Aprenda a traçar o perfil antes de fazer perguntas sobre desempenho. E aprenda a não fazer perguntas sobre desempenho se não houver motivos reais para isso.
A otimização prematura é a raiz de todos os males - D.Knuth .
fonte
Refiz os testes com 50.000 linhas e adicionei o método multi eco em 1 tag também
duração1: 31,15542483 segundos
duração2: 30,23169804 segundos
duração3: 27,54640007 segundos
Não há muita diferença entre os 2 métodos originais, mas parece que é um pouco mais rápido com menos concatenação @poke
Como duvido que precise de tantos dados de uma só vez, acho que continuarei a usar muitas tags, a indentação do código parece mais organizada e o layout de 'fonte de visualização' mais preciso
fonte
echo
aceita várias expressões para a saída. Nenhuma variante com esse recurso foi considerada nas métricas.Você pode ignorar facilmente a diferença de desempenho entre os dois. Com os recursos de computação modernos de hoje, a diferença realmente não importa. Não devemos nos preocupar com esse tipo de impressão na tela. Existem várias outras coisas que você deve considerar antes. Além disso, sempre há um debate entre o melhor desempenho e a capacidade de manutenção do seu código. Nem sempre você pode tentar obter o melhor desempenho. Em vez disso, você deve sempre considerar as questões de desempenho junto com a quantidade de tempo que você precisa gastar para melhorá-las.
fonte
O código que é fácil de traduzir em pseudocódigo é melhor. Isso é evidenciado pelos exemplos acima. O que demora mais para dizer?
Pessoalmente, eu faria:
Uma explicação técnica sobre como o intérprete funciona e por que uma maneira é mais rápida do que outra é irrelevante para um novato. É melhor apenas conhecer as regras básicas:
Use mais tags se o resultado geral for mais simples. Período.
fonte
O verdadeiro problema com isso é o uso de memória. A concatenação de strings e o eco em massa podem aumentar o uso de memória exponencialmente.
Se você enviar spam para a tag php, seu código se tornará ilegível.
A melhor solução é usar um mecanismo de modelo e evitar misturar código e apresentação.
fonte