2008-09-09 16 views
6

¿Cómo se pueden determinar las consecuencias de rendimiento de su código PHP si no está familiarizado con las partes internas? ¿Hay formas de averiguar cómo se está ejecutando su código (además de simplemente cargar la prueba)? Estoy buscando cosas como el uso de la memoria, el tiempo de ejecución de los algoritmos.Determinar las consecuencias de rendimiento del código PHP

Quizás Joel diga, "aprende C, luego lee las partes internas", pero realmente no tengo tiempo para aprender C en este momento (aunque me encantaría, en realidad).

Respuesta

4

Utilice la extensión Xdebug para crear un perfil de código PHP.

3

Si no está familiarizado con valgrind o similares, a continuación, añadir a la respuesta de @Jordi Bunster ...

cuando se ha tenido en perfiles en Xdebug, puede abrir los archivos de perfil o vertidos en kcachegrind WinCacheGrind para obtener una vista gráfica de lo que está tomando el tiempo en su código.

Afortunadamente la documentación Xdebug también explica esto en detalle, así como la forma de interpretar los resultados: http://xdebug.org/docs/profiler

0

Incluso si usted está familiarizado con el funcionamiento interno, aún debe cargar probar su hipótesis. Me gusta usar el paquete PEAR Benchmark para comparar diferentes códigos.

Si puede aislar su código, puede mantener sus pruebas de carga simples. Una técnica típica es ejecutar cada opción varias veces y ver cuál es más rápida. Por ejemplo, si tiene una clase, puede escribir un caso de prueba y eso lo pone a prueba y ejecutarlo varias veces.

+0

Sin embargo, no te obsesiones con las micro-optimizaciones como esta. Cada aplicación web PHP debe ejecutarse a través de un caché de código de operación que hace que las micro-optimizaciones sean bastante redundantes. Cargar la prueba de la aplicación finalizada es mucho mejor porque puede ver dónde está yendo realmente el tiempo y centrarse en eso – Polsonby

+0

No estaba pensando tanto en las optimizaciones tipo 'vs' Más optimizaciones de diseño y tipo de algoritmo. –

0

Puede utilizar el enfoque de bajo nivel, como se pegue microtime() y memory_get_usage() llamadas en el código o puede utilizar una de las soluciones de perfiles existentes:

  1. Xdebug (gratuito, de código abierto)
  2. Zend Studio/Debugger perfilado (comercial)
  3. Zend Server Code Tracing (comercial)
  4. xhprof (gratuito, de código abierto)

Como es habitual, las herramientas comerciales tienen buenas GUI e imágenes bonitas, pero cuestan dinero, las gratuitas son gratis, pero es probable que tengas que invertir un poco más de tiempo.

Además, el PHP CGI binario tiene un modo de referencia con la opción -T, muchos intentan ejecutar php-cgi -T 100 yourscript.php para hacer un punto de referencia para los pobres.

0

Consulte SD PHP Profiler para obtener una herramienta que le puede mostrar gráficamente dónde pasan sus aplicaciones PHP.

Cuestiones relacionadas