Messen der Leistung mit dem Android-Instrumententest

8

Mein Ziel war es, einen automatischen Leistungstest für Android-CPU-intensiven Code mit einem Instrumentaltest (AndroidJUnitRunner) zu schreiben.

Ich war sehr überrascht, dass die Testergebnisse nicht zuverlässig sind, CPU-intensiven Code zu simulieren, ich möchte testen, schrieb ich die folgende Schleife

%Vor%

Der Code wurde als Instrumental-Test und in einer Android App getestet

Das Ergebnis, das ich bekam, war wie folgt:

Der Instrumententest zeigte ~ 230 ms, um die Schleife zu vervollständigen während der gleiche Code auf dem gleichen Gerät (G5) ~ 600ms

dauerte

Ich schätze jeden Hinweis, warum die Ausführung desselben Codes auf AndroidJUnitRunner dreimal weniger Zeit benötigt als auf dem echten Gerät, während beide auf dem gleichen Gerät ausgeführt werden

    
Denis Volohsin 06.07.2017, 18:41
quelle

2 Antworten

5

Einfach Geschwindigkeit kommt von CPU, während Sie etwas Code ausführen, wenn CPU keine schwere Arbeit macht und alle CPU-Kerne sind, wird es Ihren Code ziemlich schnell ausführen. In Android ist "UI Rendering" die intensivste Arbeit, die AndroidJUnitRunner nicht macht, deshalb ist es schnell.

Wenn Sie verstehen möchten, wie Android in verschiedenen Szenarien funktioniert, werfen Sie einen Blick darauf: Ссылка

    
Manish Kumar 15.07.2017, 17:13
quelle
1

Ich denke, dass der Grund für den Unterschied in den Ergebnissen der Unterschied in der Arbeit ist, die das Gerät parallel zum Test machen muss. (Der Aufwand).

Ich schlage vor, dass Sie versuchen, ein Testframework zu verwenden, das einen größeren Overhead als AndroidJUnitRunner aufweist. Sie können Robotium ausprobieren.

    
auval 16.07.2017 08:34
quelle