2008-12-16 7 views
6

Estoy perfilando una aplicación Perl con perl -d:DProf. Cuando se ejecuta en el dprofpptmon.out archivo resultante, consigo advertencias como éstas:¿Qué son las "llamadas desestabilizadas en el exterior" en Perl's Devel :: DProf?

Compress::Zlib::__ANON__ has 5 unstacked calls in outer 
Compress::Zlib::AUTOLOAD has -5 unstacked calls in outer 
  • ¿Qué es una llamada unstacked?
  • ¿Quién o qué es "exterior"?
  • ¿Qué significan los números? ¿Cómo puede haber un número negativo de llamadas?
  • ¿Debo preocuparme?

Respuesta

9

Voy a dar a este un tiro:

  • llamadas Unstacked indican que cuando DProf estaba analizando el perfil, se encontró con más (o menos) pide a la pila (en el perfil) de lo esperado a, lo que significa que los datos de perfil son incorrectos.
  • "exterior" se refiere a la variable interna %outer en DProf, que (al parecer) realiza un seguimiento de los recuentos de pila al analizar un perfil.
  • Los números indican cuántas llamadas se esperaba DProf con respecto a cuántas encontró. 5 significa que hay más llamadas de las que esperaba, -5 significa que hay 5 llamadas menos. De nuevo, esto se debe a que los datos del perfil están corruptos.
  • No me preocuparía la integridad de su código, porque AFAIK se debe a errores en la implementación de DProf. Parece que DProf se confundió al escribir el archivo tmon.out. Sin embargo, el resto de los resultados de dprofpp pueden no ser confiables debido a esta inexactitud. Entonces, debes preocuparte (un poco) sobre la precisión de esos resultados.

Es posible que desee ver en el módulo de perfilado alternativo, como Devel::NYTProf

+0

excelente respuesta, gracias a Adam. Lo primero que hice después de publicar la pregunta fue instalar NYTProf. No creo que vuelva a mirar hacia atrás. ¿Tal vez DProf tiene un pequeño problema con las subrutinas cargadas automáticamente? Tendré que verificar las otras advertencias que obtuve. – innaM

+0

Comprobé las advertencias nuevamente y la buena noticia es que el número de llamadas asciende a 0. AUTOLOAD contribuye con la mayoría de los números negativos, pero el fragmento más grande proviene de Exporter :: export. – innaM

Cuestiones relacionadas