Os direitos autorais em inglês da introdução pertencem a Reinhold Weber, e a tradução em chinês é de autoria de yangyang (também conhecido como davidkoree). A versão bilíngue pode ser usada para divulgação não comercial, mas o autor da versão em inglês, as informações sobre direitos autorais e o autor da tradução em chinês devem ser anotados. O nível de tradução é limitado, corrija-me.
1. Se um método puder se tornar estático, declare-o estaticamente. A velocidade pode ser aumentada em até 4 vezes.
2.echo é mais rápido que imprimir.
3. Use vários parâmetros de echo (tradução: refere-se ao uso de vírgulas em vez de pontos) em vez de concatenação de strings.
4. Determine o número máximo de loops antes de executar o loop for e não calcule o valor máximo toda vez que ele fizer um loop.
5. Cancele o registro de variáveis não utilizadas, especialmente matrizes grandes, para liberar memória.
6. Tente evitar usar __get, __set, __autoload.
7.require_once() é caro.
8. Use o caminho completo ao incluir arquivos, levará menos tempo para resolver o caminho do sistema operacional.
9. Se você quiser saber a hora em que o script começa a ser executado (anotação: o servidor recebe a solicitação do cliente), é melhor usar $_SERVER['REQUEST_TIME'] do que time().
10. As funções substituem as expressões regulares para completar a mesma função.
11. A função str_replace é mais rápida que a função preg_replace, mas a função strtr é quatro vezes mais eficiente que a função str_replace.
12. Se uma função de substituição de string puder aceitar matrizes ou caracteres como parâmetros, e o comprimento do parâmetro não for muito longo, você pode considerar escrever um trecho adicional de código de substituição para que cada parâmetro passado seja um caractere, em vez de apenas escrever uma linha de código para aceitar uma matriz como parâmetros para consultas e substituições.
13. É melhor usar uma instrução de ramificação seletiva (anotação de tradução: switch case) do que usar múltiplas instruções if, else if.
14. Usar @ para bloquear mensagens de erro é muito ineficiente.
15. Abra o módulo mod_deflate do Apache.
16. A conexão com o banco de dados deve ser fechada ao terminar de usá-la.
17.$row['id'] é 7 vezes mais eficiente que $row[id].
18. Mensagens de erro são caras.
19. Tente não usar funções em loops for. Por exemplo, for ($x=0; $x < count($array); $x) chamará a função count() toda vez que fizer um loop.
20. Aumentar variáveis locais em métodos é o mais rápido. Quase tão rápido quanto chamar variáveis locais em uma função.
21. Incrementar uma variável global é 2 vezes mais lento que incrementar uma variável local.
22. Incrementar uma propriedade de objeto (ex.: $this->prop++) é 3 vezes mais lento que incrementar uma variável local.
23. Incrementar uma variável local indefinida é 9 a 10 vezes mais lento do que incrementar uma variável local predefinida.
24. Apenas definir uma variável local sem chamá-la na função também diminuirá a velocidade (na mesma medida que incrementar uma variável local). O PHP provavelmente irá verificar se existe uma variável global.
25. As chamadas de método parecem ser independentes do número de métodos definidos na classe, pois adicionei 10 métodos (antes e depois de testar o método) e não houve alteração no desempenho.
26. Os métodos nas classes derivadas são executados mais rapidamente do que os mesmos métodos definidos nas classes base.
27. Chamar uma função vazia com um parâmetro leva tanto tempo quanto incrementar variáveis locais de 7 a 8 vezes. Uma chamada de método semelhante leva cerca de 15 operações de incremento de variável local.
28. Use aspas simples em vez de aspas duplas para delimitar strings, o que será mais rápido. Como o PHP irá procurar variáveis em uma string entre aspas duplas, aspas simples não. Claro, isso só pode ser feito se você não precisar incluir variáveis na string.
29. Ao gerar várias strings, use vírgulas em vez de pontos para separar as strings, o que é mais rápido. Nota: Somente echo pode fazer isso. É uma "função" que pode receber múltiplas strings como parâmetros (Anotação: O manual do PHP diz que echo é uma estrutura de linguagem, não uma função real, então a função é colocada entre aspas duplas.) .
30.O Apache analisa um script PHP 2 a 10 vezes mais lento do que analisar uma página HTML estática. Tente usar mais páginas HTML estáticas e menos scripts.
31. A menos que o script possa ser armazenado em cache, ele será recompilado sempre que for chamado. A introdução de um mecanismo de cache PHP geralmente pode melhorar o desempenho em 25% a 100% para eliminar a sobrecarga de compilação.
32. Tente armazenar em cache o máximo possível, você pode usar o memcached. Memcached é um sistema de cache de objetos de memória de alto desempenho que pode ser usado para acelerar aplicativos web dinâmicos e reduzir a carga do banco de dados. O armazenamento em cache de códigos OP é útil para que os scripts não precisem ser recompilados para cada solicitação.
33. Ao operar uma string e precisar verificar se seu comprimento atende a determinados requisitos, você naturalmente usará a função strlen(). Esta função é executada rapidamente porque não faz nenhum cálculo e apenas retorna o comprimento conhecido da string armazenada na estrutura zval (estrutura de dados integrada em C usada para armazenar variáveis PHP). No entanto, como strlen() é uma função, será um pouco lento, porque a chamada da função passará por muitas etapas, como letras minúsculas (Anotação: refere-se ao nome da função em minúsculas, o PHP não distingue entre nomes de funções em maiúsculas e minúsculas ), pesquisa de hash, será executada junto com a função chamada. Em alguns casos, você pode usar o truque isset() para acelerar a execução do seu código.
(Exemplo abaixo)
if (strlen($foo) < 5) { echo “Foo é muito curto”$$ }
(Compare com as dicas abaixo)
if (!isset($foo{5})) { echo “Foo is too short”$$ }
Chamar isset() é mais rápido que strlen() porque, ao contrário deste último, isset() é uma construção de linguagem, o que significa que sua execução não requer pesquisa de função e letras minúsculas. Ou seja, você não gasta muita sobrecarga no código de nível superior verificando o comprimento da string.
34. Ao realizar incremento ou decremento da variável $i, $i++ será mais lento que ++$i. Essa diferença é específica do PHP e não se aplica a outras linguagens, portanto, não modifique seu código C ou Java e espere que ele seja instantaneamente mais rápido, pois não funcionará. ++$i é mais rápido porque requer apenas 3 instruções (opcodes), enquanto $i++ requer 4 instruções. O pós-incremento, na verdade, cria uma variável temporária que é posteriormente incrementada. O incremento do prefixo aumenta diretamente no valor original. Este é o máximo
35. Não necessariamente orientado a objetos (OOP). Geralmente, é caro e cada chamada de método e objeto consome muita memória.
36. Nem todas as estruturas de dados precisam ser implementadas em classes; arrays também são úteis.
37. Não subdivida muito os métodos. Pense bem sobre qual código você realmente pretende reutilizar?
38. Você sempre pode dividir o código em métodos quando precisar.
39. Tente usar um grande número de funções integradas do PHP.
40. Se houver muitas funções demoradas em seu código, considere implementá-las como extensões C.
41. Crie um perfil do seu código. O verificador informará quais partes do código levam quanto tempo. O depurador Xdebug inclui rotinas de inspeção que avaliam a integridade geral do seu código e revelam gargalos no seu código.
42.mod_zip pode ser usado como um módulo Apache para compactar instantaneamente seus dados e reduzir o volume de transmissão de dados em 80%.
43. Um tipo de processo de otimização, feito pelo otimizador PHP do Zend. É uma boa ideia manter essa otimização em mente porque nem todos os otimizadores de comando fazem as mesmas otimizações e há um grande número de provedores de serviços de Internet (ISPs) e servidores que não possuem otimizadores de comando instalados. Outro ótimo artigo sobre otimização de PHP, escrito por John Lim.