Los derechos de autor en inglés de la introducción pertenecen a Reinhold Weber y la traducción al chino es del autor yangyang (también conocido como davidkoree). La versión bilingüe se puede utilizar para difusión no comercial, pero se debe indicar el autor de la versión en inglés, la información de derechos de autor y el autor de la traducción al chino. El nivel de traducción es limitado, corríjame.
1. Si un método puede volverse estático, declarelo estáticamente. La velocidad se puede aumentar hasta 4 veces.
2.echo es más rápido que imprimir.
3. Utilice múltiples parámetros de eco (Traducción: se refiere al uso de comas en lugar de puntos) en lugar de concatenación de cadenas.
4. Determine el número máximo de bucles antes de ejecutar el bucle for y no calcule el valor máximo cada vez que se repite.
5. Anule el registro de variables no utilizadas, especialmente matrices grandes, para liberar memoria.
6. Intente evitar el uso de __get, __set, __autoload.
7.require_once() es caro.
8. Utilice la ruta completa al incluir archivos; tomará menos tiempo resolver la ruta del sistema operativo.
9. Si desea saber la hora en que el script comienza a ejecutarse (anotación: el servidor recibe la solicitud del cliente), es mejor usar $_SERVER['REQUEST_TIME'] que time().
10. Las funciones reemplazan las expresiones regulares para completar la misma función.
11. La función str_replace es más rápida que la función preg_replace, pero la función strtr es cuatro veces más eficiente que la función str_replace.
12. Si una función de reemplazo de cadena puede aceptar matrices o caracteres como parámetros, y la longitud del parámetro no es demasiado larga, entonces puede considerar escribir un código de reemplazo adicional para que cada parámetro pasado sea un carácter, en lugar de solo escribir una línea. de código para aceptar una matriz como parámetros para consultas y reemplazos.
13. Es mejor usar una declaración de rama selectiva (anotación de traducción: cambiar caso) que usar múltiples declaraciones if, else if.
14. Usar @ para bloquear mensajes de error es muy ineficiente.
15. Abra el módulo mod_deflate de Apache.
16. La conexión a la base de datos debe cerrarse cuando termine de usarla.
17.$row['id'] es 7 veces más eficiente que $row[id].
18. Los mensajes de error son caros.
19. Intente no utilizar funciones en bucles for. Por ejemplo, for ($x=0; $x < count($array); $x) llamará a la función count() cada vez que realice un bucle.
20. Incrementar variables locales en los métodos es lo más rápido. Casi tan rápido como llamar a variables locales en una función.
21. Incrementar una variable global es 2 veces más lento que incrementar una variable local.
22. Incrementar una propiedad de objeto (por ejemplo: $this->prop++) es 3 veces más lento que incrementar una variable local.
23. Incrementar una variable local no definida es de 9 a 10 veces más lento que incrementar una variable local predefinida.
24. Simplemente definir una variable local sin llamarla en la función también reducirá la velocidad (en la misma medida que incrementar una variable local). PHP probablemente comprobará si existe una variable global.
25. Las llamadas a métodos parecen ser independientes de la cantidad de métodos definidos en la clase, ya que agregué 10 métodos (antes y después de probar el método) y no hubo cambios en el rendimiento.
26. Los métodos de las clases derivadas se ejecutan más rápido que los mismos métodos definidos en las clases base.
27. Llamar a una función vacía con un parámetro lleva tanto tiempo como incrementar las variables locales de 7 a 8 veces. Una llamada a un método similar requiere cerca de 15 operaciones de incremento de variables locales.
28. Utilice comillas simples en lugar de comillas dobles para encerrar cadenas, lo que será más rápido. Debido a que PHP buscará variables en una cadena entre comillas dobles, las comillas simples no. Por supuesto, esto sólo se puede hacer si no es necesario incluir variables en la cadena.
29. Al generar varias cadenas, utilice comas en lugar de puntos para separar las cadenas, lo cual es más rápido. Nota: Sólo echo puede hacer esto. Es una "función" que puede tomar varias cadenas como parámetros (Anotación: el manual de PHP dice que echo es una estructura del lenguaje, no una función real, por lo que la función está entre comillas dobles). .
30.Apache analiza un script PHP de 2 a 10 veces más lento que una página HTML estática. Intente utilizar más páginas HTML estáticas y menos scripts.
31. A menos que el script se pueda almacenar en caché, se volverá a compilar cada vez que se llame. La introducción de un mecanismo de almacenamiento en caché de PHP generalmente puede mejorar el rendimiento entre un 25% y un 100% para eliminar la sobrecarga de compilación.
32. Intente almacenar en caché tanto como sea posible, puede usar memcached. Memcached es un sistema de almacenamiento en caché de objetos de memoria de alto rendimiento que se puede utilizar para acelerar aplicaciones web dinámicas y reducir la carga de la base de datos. El almacenamiento en caché de códigos OP es útil para que no sea necesario volver a compilar los scripts para cada solicitud.
33. Cuando opere una cadena y necesite verificar si su longitud cumple con ciertos requisitos, naturalmente utilizará la función strlen(). Esta función se ejecuta bastante rápido porque no realiza ningún cálculo y simplemente devuelve la longitud conocida de la cadena almacenada en la estructura zval (la estructura de datos incorporada de C utilizada para almacenar variables PHP). Sin embargo, dado que strlen() es una función, será algo lento porque la llamada a la función pasará por muchos pasos, como letras minúsculas (Anotación: se refiere al nombre de la función en minúsculas, PHP no distingue entre nombres de funciones en mayúsculas y minúsculas ), búsqueda de hash, se ejecutará junto con la función llamada. En algunos casos, puedes utilizar el truco isset() para acelerar la ejecución de tu código.
(Ejemplo a continuación)
if (strlen($foo) < 5) { echo “Foo es demasiado corto”$$ }
(Compare con los consejos a continuación)
if (!isset($foo{5})) { echo “Foo es demasiado corto”$$ }
Llamar a isset() resulta ser más rápido que strlen() porque, a diferencia de este último, isset() es una construcción del lenguaje, es decir que su ejecución no requiere búsqueda de funciones y letras minúsculas. Es decir, en realidad no gasta muchos gastos generales en el código de nivel superior para verificar la longitud de la cadena.
34. Al realizar un incremento o disminución de la variable $i, $i++ será más lento que ++$i. Esta diferencia es específica de PHP y no se aplica a otros lenguajes, así que no modifique su código C o Java y espere que sea instantáneamente más rápido, no funcionará. ++$i es más rápido porque solo requiere 3 instrucciones (códigos de operación), mientras que $i++ requiere 4 instrucciones. El incremento posterior en realidad crea una variable temporal que posteriormente se incrementa. El incremento del prefijo aumenta directamente sobre el valor original. Este es el más
35. No necesariamente orientado a objetos (OOP). La orientación a objetos suele ser costosa y cada llamada a método y objeto consume mucha memoria.
36. No es necesario implementar todas las estructuras de datos en clases; las matrices también son útiles.
37. No subdividas demasiado los métodos. Piensa detenidamente qué código realmente pretendes reutilizar.
38. Siempre puedes dividir el código en métodos cuando lo necesites.
39. Intente utilizar una gran cantidad de funciones integradas de PHP.
40. Si hay muchas funciones que requieren mucho tiempo en su código, puede considerar implementarlas como extensiones de C.
41. Perfila tu código. El verificador le dirá qué partes del código toman cuánto tiempo. El depurador Xdebug incluye rutinas de inspección que evalúan la integridad general de su código y revelan cuellos de botella en su código.
42.mod_zip se puede utilizar como módulo de Apache para comprimir instantáneamente sus datos y reducir el volumen de transmisión de datos en un 80%.
43. Un tipo de proceso de optimización, como lo realiza el optimizador PHP de Zend. Es una buena idea tener en cuenta esta optimización porque no todos los optimizadores de comandos realizan las mismas optimizaciones y hay una gran cantidad de proveedores de servicios de Internet (ISP) y servidores que no tienen optimizadores de comandos instalados. Otro gran artículo sobre la optimización de PHP, escrito por John Lim.