 |
AppletTalk.com Java discussions newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Georg Sauthoff Guest
|
Posted: Sat May 12, 2007 2:09 am Post subject: Profilen mit z.B. hprof |
|
|
Hi,
wie profile't ihr ueberhaupt eure Java-Programme?
Ich habe mir bisher 'hprof' (-agentlib:hprof) angeschaut.
Mein Test-Programm hat eine Laufzeit von ~30 Sekunden unter normalen
Umstaenden. Mit den Default-Optionen von hprof hat das Programm dann
eine Laufzeit von 30 Minuten - wobei in dem .txt Ouput noch keine
Statistik ueber Methodenaufrufe etc. enthalten ist.
Mit cpu=times beobachte ich dann eine Laufzeit von 117 Minuten (alles auf
einem 2.3 GHZ Rechner) (in der Sun Doku stand etwas von bis Faktor 10
gewoehnlich ...). Ach, und ausserdem enthaelt der Ouput negative
'Zeit'angaben (total = -1660662325) ...
cpu=samples ist da schon brauchbarer, da der Overhead nur
wenige Sekunden ausmacht.
Nun werte ich den hprof-Output via awk aus, z.B.
awk ' /reflect|Field/ { r += $2; print $0; } END { print "Sum: ", r; }'
hprof_output_ohne_header_bzw_footer
wenn ich wissen moechte wieviel Zeit mein Programm anteilig fuer
Reflection-Gedoens aufgewendet hat.
Soweit so gut. Nur wie zuverlaessig ist hprof ueberhaupt? Denn wenn ich
nun die Ergebnisse von cpu=times mit cpu=samples vergleiche, dann
sind die Angaben schon so unterschiedlich, das man keinen Zusammenhang
erkennen kann. Wobei ich mich eher auf cpu=samples verlassen wuerde, da
cpu=times so extrem intrusive ist, dass man sich etwas wundert.
Ein andere Sache: Wie sieht es mit ge'inline'ten Methoden aus; werden
die so beruecksicht, das sie zur Methode, in der sie ge'inline't wurden,
gezaehlt werden, oder wird die Zeit als Zeit fuer ein 'fiktiver'
Methodenaufruf berechnet? Oder wird gar nicht mehr von der VM just-in-time
ge'inline't (falls das bisher geschah)?
Gruss
Georg Sauthoff |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|