Dado que el código PHP funcionará bien incluso si está plagado de advertencias y avisos sobre índices indefinidos y métodos no estáticos que se llaman estáticos, etc., la pregunta es si pierdo el tiempo para eliminar TODOS los avisos y advertencias de mi código ¿funcionará significativamente más rápido?¿Funciona php más rápido sin advertencias?
Respuesta
He marcado un artículo en el que el autor hizo algunos puntos de referencia sobre eso; por desgracia, es en francés ... pero aquí es (tal vez vas a entender algunas partes de ella): Ne faites pas d'erreur
Y aquí están los números, para ayudar a las personas que no leen francés:
- avisos 10k, con
error_reporting
ydisplay_errors
habilitadas: 5,162.76 ms - mismo, pero con
display_errors
discapacitados: 136.18 ms - mismo, pero con
error_reporting
desactivados demasiado: 117,79 ms - y, finalmente, después de parchear el código para que no se produce ningún aviso más: 19,51 ms
Lo que significa que, sí, el código PHP se ejecuta más rápido y sin avisos/advertencias/errores, incluso cuando aquellos no se muestran ni informado.
Derick Rethans dice lo mismo en este artículo: Five reasons why the shut-op operator (@) should be avoided(citando):
Razón 3: Es lento (parte 2)
Siempre PHP genera un error mensaje internamente, se procesa y formateado todo el camino hasta el mensaje formateado que puede ser con salida str Aight para el navegador.
Solo antes de que se muestre, la configuraciónerror_reporting
está marcada. Sin embargo, esto no está relacionado con el operador @ @ exclusivamente.
El mensaje de error tiene siempre el formato completo antes de marcarerror_reporting
odisplay_errors
para el caso.
depende de la cantidad de advertencias, pero la manipulación en PHP error es decir, incluso cuando ocultar mensajes de error, relativamente caro.
Lo que se tiene que hacer para estimar el efecto está perfilando en el nivel C: Instalar valgrind (asumiendo que usted está en Linux) y luego ejecutar
callgrind /path/to/bin/php /path/to/script.php
esto genera un archivo llamado callgrind.12345
más o menos, cargue este archivo en una aplicación como kcachegrind y busque php_error_docref0
o php_error_cb
para ver cuánto tiempo se pasó en el controlador de errores.
Tenga en cuenta los documentos cachegrind y valgrind cuando haga eso y tenga en cuenta que hay muchas variables dependientes del sistema implicadas.
EDIT: Oh, una nota más: Supongo que manera pasa más tiempo al hablar con bases de datos y sistemas similares. y otra nota adicional: la fijación de avisos generalmente hace que el código sea más robusto para cambios futuros, por lo que es una buena idea, independientemente del rendimiento.
1 para la edición :-) – TheHippo
No lo llamaría una mejora "significativa" en la mayoría de los casos, pero ejecutar código que no genera errores de ningún tipo, naturalmente, se ejecuta más rápido que el código que genera un seguimiento de la pila cada dos líneas.
Consulte: http://www.noamdesign.com/Web-Design-Blog/15-tips-to-optimizing-your-php-code/ para obtener más información sobre optimizaciones menores que puede realizar en su código.
En mi propia experiencia, he descubierto que el 95% de la optimización de código generalmente trata sobre cómo usa su base de datos.
- 1. IPC más rápido en PHP
- 2. Redirigir más rápido, PHP o htaccess?
- 3. Más rápido javac/ant?
- 4. Matplotlib correr más rápido
- 5. Algo más rápido que get_headers()
- 6. mariscal vuelca más rápido, cPickle carga más rápido
- 7. Izquierda JOIN más rápido o Inner Join más rápido?
- 8. Promedio rápido sin división
- 9. ¿Es Quercus (Java) más rápido que PHP nativo?
- 10. ¿Cuál es el más rápido en PHP- MySQL o MySQLi?
- 11. SQL & PHP - ¿Cuál es más rápido mysql_num_rows() o 'select count()'?
- 12. do-while es el ciclo más rápido en php?
- 13. ¿Cuál es el analizador XML más rápido en PHP?
- 14. PHP: ¿es más rápido el analizador JSON o XML?
- 15. ¿Por qué es === más rápido que == en PHP?
- 16. ¿Es php o sql más rápido para las operaciones básicas?
- 17. ¿Cómo eliminar más rápido?
- 18. ¿Es + = más rápido que - =?
- 19. strlen más rápido?
- 20. Más rápido que String.Replace()
- 21. ¿Cómo funciona grep tan rápido?
- 22. cómo desactivar estas advertencias PHP?
- 23. PHP - método error_get_last para advertencias?
- 24. En MySQL, ¿es más rápido eliminar e insertar o es más rápido actualizar las filas existentes?
- 25. Quicksort ordena números más grandes más rápido?
- 26. Haciendo que Zend-Framework funcione más rápido
- 27. Super rápido getimagesize en php
- 28. ¿Es `extender` más rápido que` + = `?
- 29. ¿Cómo crear índice más rápido?
- 30. Desarrollo de Android más rápido
Eh, me di cuenta después de publicar: este es mi número 1.000 respuesta ^^ –
1 para la prueba final. Los avisos y las advertencias son sus peores errores específicamente porque no lo obligan a solucionar el problema de inmediato. Los índices de matriz faltantes son tan fáciles de corregir, pero rara vez se abordan. Personalmente, trato cada aviso/advertencia como si fuera E_FATAL. – Dereleased
Ahora, una pregunta es si la comprobación de errores no causará más demora que el controlador. Quiero decir: probar la existencia, etc. No me malinterpreten: odio las advertencias y avisos. Hace poco recibí un proyecto de este tipo, pero los resultados anteriores no me convencen para invertir el dinero. – Galvani