2010-12-10 5 views
0

Ich frage mich, ob es eine Möglichkeit gibt, einen gegebenen Bytecode (Klassendatei, die Hauptfunktion im ursprünglichen Code hat) Laufzeit mit Java-Bytecode Instrumentierung von Asm zu messen.Messung eines Java-Programmlaufzeit mit asm Instrumantation

Die Messung sollte so genau wie möglich und möglichst in Nanosekunden erfolgen.

Dank

+0

Darf ich fragen, wofür brauchen Sie es? – khachik

+0

Ja, ich arbeite an einem Projekt, das einen gegebenen Bytecode erhält und eine Analyse darüber durchführt. Das Hauptziel ist es, Zugriffe auf Objekte im Zeitverlauf zu verfolgen und sie auf einer Heatmap darzustellen. Der Grund dafür, dass man nach Nanozeit fragt, ist, dass es auf der Heatmap viel besser aussieht, die Auflösung besser ist und man sich tatsächlich einige "Phasen" des Programms ansehen kann. – RanZilber

Antwort

1

gewarnt, dass System.nanoTime Hinzufügen() oder dergleichen wird von 300 Nanosekunden oder mehr auf den Abschnitt des Codes gemessen hinzuzufügen.

Es ist möglich in ASM, aber ich vermute, dass Sie nicht die gewünschten Ergebnisse geben werden.

Haben Sie versucht, einen Leistungstest der Methode durchzuführen. d. h. für 2 Sekunden anrufen, um zu sehen, wie hoch die durchschnittliche Anrufzeit war. Dies kann genau/stabil auf eine Nanosekunde sein, wenn Sie es lange genug nennen.

+0

Nun, da ich keine Eingabe gebunden habe. Es kann ein beliebiges Programm sein, sogar ein Programm, das eine Stunde lang läuft. Ich möchte diese Zeit in einem Lauf bekommen. Ich möchte eine Zeile am Anfang des Codes eingeben, die die Zeit beim Betteln und am Ende abmessen soll. Ist es möglich? – RanZilber

+0

Es klingt wie die Art von etwas, das ein Profil ziemlich gut macht. Haben Sie zuerst versucht, die Anwendung zu profilieren? –

+0

was meinst du mit Profiling? – RanZilber