Ich möchte sehen können, welcher Code in Tausenden von Zeilen Quellcode am häufigsten ausgeführt wird und am längsten dauert. Dies dient der Optimierung.
Für die Optimierung ist es wichtig zu sehen, welche Teile des Codes am häufigsten ausgeführt werden, da ich mich auf diese Teile konzentrieren sollte, um sie zu beschleunigen. Gleichzeitig wird natürlich ein Teil des Codes sehr oft ausgeführt, benötigt jedoch praktisch keine Zeit. Daher ist es auch wichtig zu sehen, welcher Code am längsten dauert.
Ich denke, das Beste aus beiden Welten wäre ein Programm, das die Zeit addiert, die ein Code benötigt, einschließlich ALLER Zeiten, in denen er ausgeführt wurde (um herauszufinden, was Ihren Code insgesamt am meisten verlangsamt). Gibt es dafür eine Art Werkzeug?
Antworten:
Was Sie suchen, ist Profiling :
Es gibt mehrere solcher Anwendungen. Manchmal sind diese in die IDE selbst integriert. Die NetBeans-Idee ist ein solches Tool, in das ein Profiler integriert ist.
Ein weiteres solches Tool ist Visual VM .
Profiler können auf unterschiedliche Weise arbeiten - und man sollte sich der Unterschiede bewusst sein. Ein Ansatz besteht darin, jede Sekunde eine Momentaufnahme der ausgeführten Threads zu erstellen und festzustellen, welche Methoden derzeit für jeden Thread aufgerufen werden. Dies verwendet eine Stichprobe dessen, was da draußen ist.
Der andere Ansatz besteht darin , den Java-Bytecode zu instrumentieren , um die Start- und Stoppzeit an eine andere Anwendung zurückzumelden.
Das Schreiben eines Profilers ist für einen erfahrenen Java nicht besonders schwierig. IBM hat einen Artikel zum Schreiben eines eigenen Profilers (mit Quellcode!). Dieser basiert auf dem Java Interactive Profiler .
Es gibt eine Vielzahl von Profilern - sowohl kostenlose als auch kommerzielle (wie wäre es mit einem Profiler, der an die Ausführung von JVM-Instanzen angeschlossen ist, die Ihnen Bericht erstatten können (E-Mail oder eine andere Benachrichtigung), wenn bestimmte Methoden die erwartete Laufzeit überschreiten? Programm, das zurückmeldet, wenn Webanfragen zu lange gedauert haben - wurde das historische Profil für diese Anfrage zur späteren Überprüfung gespeichert?). Sie müssen nur wissen, wonach Sie suchen, um sie zu finden und von dort fortzufahren.
Sobald Sie den Profiler haben, können Sie die Profilerstellungsergebnisse interpretieren .
quelle