22 Stimmen

Java-Leistungstimerbibliothek

Ich wickle Code häufig in ein [System.nanoTime()](http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html#nanoTime()) Paar ein, um die Zeit zu messen. So etwas wie:

long start = System.nanoTime();    
methodToBeTimed();
long elapsedTime = System.nanoTime() - start;

Gibt es eine gute Timing-Bibliothek, die bei diesem Problem hilft? Auch selbstgeschriebener Code wird akzeptiert.

HB

Ein Profiler ist hier keine Lösung, da ich einige Zeitbeschränkungen in meinen Unit-Tests durchsetzen möchte, daher möchte ich Methoden programmgesteuert timen.

0 Stimmen

Ich verstehe nicht, was das "Problem" ist, das du zu lösen versuchst. Du hast eine Zeile oben und eine Zeile unten, um dir die verstrichene Zeit anzuzeigen. Und du hast eine Variable, um sie festzuhalten. Du könntest dies in eine Klasse einwickeln oder die Stopwatch-Klasse verwenden, aber du wirst die Komplexität des Codes wirklich nicht verringern: du wirst immer noch eine Zeile oben und eine Zeile unten benötigen. Möchtest du Hilfe dabei, eine große Anzahl solcher Zeiten aufzuzeichnen und zu verfolgen?

1voto

nicerobot Punkte 8777

Caliper

Und zusätzlich zum Lesen der Wikis auf dieser Seite empfehle ich, folgendes zu lesen:

1voto

keiki Punkte 2972

Etwas Neues auf dem Markt ist JMH. Es wird unter dem Dach des OpenJDK-Projekts hergestellt.

1voto

Garret Wilson Punkte 15709

Ich habe gerade angefangen, Java Simon (früher auf Google Code) zu verwenden, und es scheint großartig zu sein! Ein einfaches Set von Stoppuhren und Zählern mit wenigen Abhängigkeiten.

0voto

Mike Punkte 18362

Ein einfacher Wrapper für commons-lang StopWatch, der die Mehrfachgewindumgebung berücksichtigt, wenn stop nicht aufgerufen wird, wird die Sprungstatistik nicht gezählt und die 'failed leaps count' inkrementiert (Sie können stop nicht im finally-Block einschließen, wenn das Verhalten gewünscht ist), stellt Live-Statistiken über JMX bereit und liefert konsolidierte serialisierbare Ergebnisse über das Netzwerk. Beispielverwendung:

private PerfStat methodPerf = new PerfStat("method.under.test");
...
public void myMethod() {
    methodPerf.start();
    ...
    long timeNs = methodPerf.stop();
}

Abhängigkeit

    org.droolsassert
    da-utils

1 Stimmen

Ich glaube nicht, dass deine Implementierung für minLapTime funktionieren würde, da sie mit dem niedrigsten möglichen Wert initialisiert ist: 0. Sie sollte wahrscheinlich mit Long.MAX_VALUE initialisiert (und zurückgesetzt) werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X