2012-01-10 11 views
6

Actualmente, estoy usando xdebug profiler & KCacheGrind. Pero el formato GallGrind no almacena rastreo de llamadas completa, sólo los rastreos de llamadas entre padres e hijos (miran Kcachegrind/callgrind is inaccurate for dispatcher functions? para lo que estoy hablando.)¿Un 'profiler con visualización' para PHP con `visualización completa de backtrace`?

¿Hay un perfilador con visualización con visualización traza completa disponible para PHP?

He mirado

  • PHP Quick Profiler: Pero, requiere mucho código que desea agregar y sin visualización.
  • phpCallGraph: Su versión más reciente ha sido modificada el 2009-08-06 (ref).
+0

Me encantaría saber la respuesta también. Utilizo las mismas herramientas actualmente y anhelan una mejora. –

+1

@ Mr-sk estuvo de acuerdo. Eche un vistazo a http://particletree.com/features/php-quick-profiler/. Pero no hay herramienta de visualización. – ThinkingMonkey

+0

Interesante, genial, lo echaremos un vistazo. –

Respuesta

3

Tuve que hacer algunos de los principales perfiles de PHP para un proyecto anterior hace unos meses.

La mejor opción que pude encontrar fue xhprof de Facebook con xhprof-ui.

Lea acerca de cómo instalar ambos aquí:

http://blog.preinheimer.com/index.php?/archives/355-A-GUI-for-XHProf.html

Algunas ventajas:

  • interfaz fácil de usar
  • backend de base de datos para guardar sesión de perfil anterior
  • agradable callgraphs
+0

+1 para la recomendación de xhprof, aunque es bastante diferente de usar que el generador de perfiles de xdebug –

+0

Pero no parece tener ninguna herramienta de visualización para el seguimiento de llamadas. +1 por sugerirlo sin embargo. – ThinkingMonkey

+0

_Estoy corregido_. Xprof se ve increíble. – ThinkingMonkey

1

Si solo quieres mirar la salida del generador de perfiles, eso es una cosa. Si está tratando de optimizar su código, no se olvide de this method. Sé que puedes hacerlo en xdebug.

Se basa en una idea muy simple. Supongamos que su programa está haciendo más de lo necesario, por lo que se puede acelerar. De hecho, supongamos, por razones de argumento, que está haciendo 9 veces más de lo necesario, por lo que en total si se supone que demora 1 segundo, en realidad está tomando 10. Esos 9 segundos de trabajo innecesario pueden o no mezclarse por completo como el azúcar y la harina

OK, durante esos 10 segundos, simplemente presiona^C para detenerlo, y luego mira cuidadosamente para ver qué estaba haciendo en ese momento.

¿Cuál es la probabilidad de que lo haya atrapado haciendo el derroche? En realidad, es muy poco probable que no lo haya tomado haciendo el desperdicio.

Si no está seguro, simplemente repita.

El desperdicio no tiene que ser tan grande como eso. De hecho, si continúa pausándolo de esa manera, tan pronto como lo vea haciendo algo en más de una ocasión, si es algo de lo que podría deshacerse, obtendrá una agradable aceleración, garantizada.

Por ejemplo, si lo pausa 5 veces y lo ve haciendo algo que realmente no tiene que ver en 2 de esas ocasiones, ¿cuánto podría ahorrar? No sabe exactamente, pero será alrededor del 40%. Podría ser tan pequeño como 20%. Podría tan fácilmente ser tan grande como 60%. Así que no sabe cuánto ahorrará, pero no tira una pepita de oro solo porque no está seguro de cuánto pesa.

Por último, no hay ningún problema para que el generador de perfiles descubra que esto no sucederá. Lo contrario no es verdad.

+0

:) el emoticón porque, esto es lo que he estado haciendo desde el momento en que comencé a programar. Esta es mi primera vez con un generador de perfiles. – ThinkingMonkey

+0

@Think: Heh. Alegra oírlo. Si tienes más suerte con un generador de perfiles, házmelo saber. –

+0

Nada de ayuda especial del generador de perfiles. Pero, (a veces soy muy distraído y tengo visión) Me ayudó a notar alguna llamada a función que no era necesaria. Y me había perdido para eliminar cuando había hecho una optimización (para usar el caché). – ThinkingMonkey

Cuestiones relacionadas