2017-06-27 2 views
0

In Standard-JVM (beispielsweise Version 1.8), können wir die aktuellen Threads Zeit wie dieser Zugang:Wie kann ich Thread-spezifische Zeit in Android messen?

ManagementFactory.getThreadMXBean().getCurrentThreadCpuTime(); 

Was die äquivalente Methode ist aktuellen Threads Zeit in Android (das heißt, Dalvik VM) zu erhalten.

+0

CPU-Zeit definieren. Willst du Zeit, seit die CPU gestartet wurde, verstrichene Zeit, Wandzeit, etwas anderes? Welche Präzisionsstufe suchen Sie? –

+0

Auch unter Standard-Java gibt es kein Versprechen, dass currentThreadCpuTime unterstützt wird. –

+0

Ich möchte die Laufzeit einer Methode in Android profilieren. Wenn ich die Zeit mit 'System.nanoTime()' (zB t1 = System.nanoTime(); methodCall(); timeDiff = System.nanoTime() - t1;), andere Timing-Messungen (z. B. Kontextwechselzeit, andere Thread-Laufzeiten) werden in die berechnete Zeitdifferenz einbezogen. Also, ich möchte nur die Ausführungszeit für diesen bestimmten Thread berechnen. Soweit ich weiß, können wir im Standard-Java 'getCurrentThreadCpuTime()' verwenden. Aber ich weiß nicht, wie man das in Android macht. – cagryInside

Antwort

0

Also ich diese Lösung in Android gefunden:

SystemClock.currentThreadTimeMillis(); 

Die Android documentation besagt, dass diese Methode

Returns Millisekunden in den aktuellen Thread ausgeführt wird.

0

Ich bin nicht mit einem solchen Äquivalent in der Java-API vertraut.

Denken über die Java-API hinaus, jedoch ... könnten Sie irgendwelche nützliche Informationen von top einholen?

top -t wird anscheinend Thread-spezifische Informationen in die Berichterstattung enthalten. hier ist das Ergebnis auf einer meiner Geräte ab:

enter image description here

scheint es Thread und CPU-Nutzungsdaten zur Verfügung stehen.

Zugriff auf diese Ausgabe würde einige primitive Form der Eingabe-Stream-Behandlung, z.

try { 
    final String cmd = "top -t" 

    final Process ps = Runtime.getRuntime().exec(cmd); 
    ps.waitFor(); 

    final InputStream instream = ps.getInputStream(); 

    ... 

} catch(Throwable t) { /* handle errors */ } 
} finally { /* clean-up */ } 
Verwandte Themen