En las secciones siguientes se incluye información que conviene tener en cuenta al evaluar los resultados del analizador:
Para calcular la estadística del tiempo propio de un nodo raíz, el analizador resta los tiempos de todos los nodos secundarios al tiempo total del nodo raíz.
Por tanto, el tiempo de un nodo secundario no instrumentado se refleja en el tiempo propio del nodo raíz. Si un nodo raíz tiene un tiempo propio considerable, conviene indagar la razón. Quizá no haya instrumentado los métodos adecuados y, por tanto, no esté usando el lugar correcto.
Por ejemplo, supongamos que el método A llama al método B.
El método A tarda un total de 10 segundos (tiempo que incluye la llamada a B) y la llamada a B tarda un total de 10 segundos.
Si están instrumentados A y B, la pila de llamadas refleja dicha información. Observará que A tiene un tiempo propio de 0 segundos y que B tiene un tiempo propio de 10 segundos (10 segundos invertidos realmente en B). Sin embargo, si B no está instrumentado, sólo observará que la llamada a A dura 10 segundos y que el tiempo propio de A es 10 segundos. En consecuencia, tal vez asuma que el problema reside directamente en A, no en B.
En concreto, se podrían apreciar largos tiempos propios durante la compilación inicial de JSP. Si restablece los resultados recogidos y vuelve a presentar la página, el tiempo propio será muy inferior.
Dadas las limitaciones de la estrategia de instrumentación de Java, las llamadas iniciales a this() o super() aparecen como llamadas del mismo nivel para la llamada de constructor y no como llamadas secundarias. Consulte el ejemplo siguiente:
class A { public A() { this(0); } public A(int i) { } } and: class B { public static void test() { new A(); } } The call tree will look like this: B.test() -A.<init>(int) -A.<init>() Rather than this: B.test() -A.<init>() -A.<init>(int) |
No se confunda con la aparente gran cantidad de tiempo invertida en diversos threads de daemon de Identity Manager, como ReconTask.WorkerThread.run() o TaskThread.WorkerThread.run(). La mayor parte de este tiempo es inactivo, en espera de eventos. Hay que explorar estos rastros para constatar cuánto tiempo se tarda realmente al procesar un evento.