2010-12-21 12 views
3

Weiß jemand, wie kann ich einen neuen Leistungsindikator erstellen (Perfmon-Tool) in Java?Erstellen Leistungsindikatoren in Java

Beispiel: ein neuer Leistungsindikator zur Überwachung der Anzahl/Dauer von Benutzeraktionen.

Ich habe solche Leistungsindikatoren in C# und es war recht einfach, aber ich konnte nichts hilfreich für sie in Java ... und

+1

möglich Duplikat [Java App-Leistungsindikatoren in Perfmon gesehen] (http://stackoverflow.com/questions/358129/java-app-performance-counters-viewed- in-perfmon) –

Antwort

1

nicht sicher, was Sie dieses Tool erwarten einige zu tun, aber ich würde erstellen Datenstrukturen diese Zeiten und zählt wie

class UserActionStats { 
    int count; 
    long durationMS; 
    long start = 0; 

    public void startAction() { 
     start = System.currentTimeMillis(); 
    } 
    public void endAction() { 
     durationMS += System.currentTimeMillis() - start; 
     count++; 
    } 
} 

Eine Sammlung für diese Aufnahme wie

private static final Map<String, UserActionStats> map = 
     new HashMap<String, UserActionStats>(); 

public static UserActionStats forUser(String userName) { 
    synchronized(map) { 
     UserActionStats uas = map.get(userName); 
     if (uas == null) 
      map.put(userName, uas = new UserActionStats()); 
     return uas; 
    } 
} 
+0

Sollte Ihr durationMS eigentlich nicht inkrementieren: start - System.currentTimeMillis(); – jzd

+0

Danke, aber ich denke es nicht genau was ich meinte. Ich möchte meinen Leistungsindikator im perfmon-Tool anzeigen. Eine einfache Messung von Dauer oder Anzahl wird dort nicht aktualisiert und nicht in den Perfmon-Protokollen gespeichert – Diana

3

aussehen könnte, wenn Sie Ihre performan entwickeln wollen ce counter unabhängig vom Hauptcode, sollten Sie sich die Aspektprogrammierung anschauen (AspectJ, Javassist).

Sie können Ihren Leistungsindikator an die gewünschte (n) Methode (n) anschließen, ohne den Hauptcode zu ändern.

Verwandte Themen