Wie können Sie feststellen, welche Teile Ihres Codes am häufigsten ausgeführt werden?


11

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?


Haben Sie eine Vorliebe für Betriebssystem oder Programmiersprache?
Mawg sagt, Monica am

Antworten:


15

Was Sie suchen, ist Profiling :

In der Softwareentwicklung ist die Profilerstellung ("Programmprofilerstellung", "Softwareprofilierung") eine Form der dynamischen Programmanalyse, die beispielsweise die räumliche (Speicher-) oder zeitliche Komplexität eines Programms, die Verwendung bestimmter Anweisungen oder die Häufigkeit und Häufigkeit misst Dauer der Funktionsaufrufe. Die häufigste Verwendung von Profilinformationen ist die Unterstützung der Programmoptimierung.

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. Geben Sie hier die Bildbeschreibung ein

Ein weiteres solches Tool ist Visual VM .

Geben Sie hier die Bildbeschreibung ein

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 .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.