Java CPU Performance optmieren / Ursache suchen

Squicky

Lt. Commander
Registriert
Sep. 2002
Beiträge
1.405
Hallo

Ich schreibe zurzeit ein java Programm mit Eclipse.
Ein einer Bestimmten Dateneingabe braucht der Algorithmus sehr lange. (CPU für längere Zeit 100%)

Gibt es einfache Monitoring Möglichkeiten um zu prüfen, welche Funktion wieviel CPU Rechen-Zeit verbraucht?

Danke
 
Das Simpelste (meiner Meinung nach), jedoch mit dem Nachteil, dass das zu fummlig wird, wenn das Projekt etwas größer wird.:
Code:
funktion(){
    time=getsystime;
    foo();
    bar();
    output Std.err(getsystime - time + "nameoffunction");
}


Ansonsten gibt es Java Profiler und ganz viel Text zum Einarbeiten :)
 
Mal ab davon dass das kein Java-Code ist, kann diese Lösung schnell dazu führen, dass man im Code, den man ausliefert lauter komische Outputs erhält. Daher würde ich davon Abstand nehmen System.out.XXX als debugging/profiler zu nutzen.
 
Pseudocode um das Prinzip darzustellen, nicht mehr und nicht weniger. Nach Java müsste ich alle Datentypen festlegen etc. pp. Das wäre aber nur zusätzlicher Kram, der nicht hilft das Prinzip zu veranschaulichen.

Ansonsten, Std.err ist nicht Std.out!

Auch sollte klar sein, dass solche Funktionen nur zum Testen nach Art "Quick & Dirty" taugen und wieder aus dem Code fliegen sollten wenn nicht mehr gebraucht. Entsprechend auch die Empfehlung, dass diese Methode für aufwendigeres Profiling nicht geeignet ist.
 
Java Misson Control ist nicht schlecht. Das nutz ich recht gerne.

Man sieht dabei auch Speicherzugriffe etc..

Vorsicht ist aber echt Arbeit ;)
 
Zurück
Oben