Berücksichtige die jprofiler "Hot Spot" -Ansicht korrekt die CPU, die von nativem Code genutzt wird, der über JNI aufgerufen wird?

8

Ich habe mit JProfiler einen Java-Code analysiert, der nativen C-Code über JNI aufruft, und bekomme seltsame Ergebnisse aus dem Fenster "CPU Views". Insbesondere die Informationen auf der Registerkarte "Aufrufstruktur" sagen mir, dass die Java-Methode, die den systemeigenen Code aufruft, den höchsten Bruchteil der Laufzeit verbraucht, aber die Registerkarte "Hot Spots" diese Methode überhaupt nicht auflistet. Ich bemerkte auch eine ähnliche Geschichte für die org.joda.time-Klassen, von denen berichtet wird, dass sie einen ziemlich großen Teil der CPU haben, aber nicht als Hotspots gemeldet werden, und ich frage mich, ob dies daran liegt, dass sie viel Zeit mit dem Anrufen verbringen nativer Datumsumwandlungscode.

Jede Einsicht in dieses Problem wäre willkommen.

EDIT: Ich habe gerade eine sehr beunruhigende wissenschaftliche Arbeit mit dem Titel "Bewertung der Genauigkeit von Java Profilern" entdeckt (ich würde einen Link angeben, aber es scheint, als wäre der Server der University of Colorado, auf den das Google-Ergebnis verweist, sehr unglücklich , also musste ich eine Kopie von Googles "Quick View" -Link ziehen. Ich vermute, dass das Problem mit den nativen Methoden darin besteht, dass sie überzählt werden, weil es viele Anrufe zu ihnen gibt, sie sind kurz und der Anruf führt wahrscheinlich zu einer Fließgrenze; Ich bin mir jedoch nicht sicher, ob das Gleiche für die Zeitkonvertierungsroutinen gelten würde. Beachten Sie, dass ich bei der Verwendung von instrumentiertem Profiling und Stichprobenprofilen für den gleichen Testlauf signifikant unterschiedliche Ergebnisse erhalte und die instrumentierten Ergebnisse besser mit meiner Intuition übereinstimmen. Ich empfehle das Papier jedem, der sich jemals über die Ergebnisse eines Profilierungslaufs am Kopf kratzt. Ich hoffe immer noch, dass jemand mehr Informationen dazu hat; "Der Profiler ist falsch" ist kein sehr beruhigendes Ergebnis.

EDIT 2: Sieht aus wie colorado.edu sich selbst sortiert hat, hier ist der Link: Ссылка

    
BD at Rivenhill 06.03.2013, 22:53
quelle

1 Antwort

2

Die Hot-Spot-Ansicht zeigt Methoden mit großer inhärenter Zeit. In der Anrufbaumansicht sehen Sie Methoden mit großer Gesamtzeit oben in der Anrufliste. Diese Methoden sind normalerweise keine Hotspots.

Was als "inhärente Zeit" angesehen wird, hängt davon ab, wie Ihre Filter konfiguriert sind.

Eine ausführliche Erläuterung finden Sie in diesem Hilfethema .

    
Ingo Kegel 11.03.2013 08:45
quelle

Tags und Links