Einfache Benchmark-Tests mit Vogar

  • Ich möchte einfache Benchmark-Software für Android schreiben. Ich recherchierte und fand Caliper + Vogar. Aber es gibt kein Beispiel über sie. Verwendet jemand es? Ich brauche einfachen Code, um Caliper-Benchmarks von Android-Aktivität aufzurufen.

    Vielen Dank für Hilfe.

    22 November 2011
    ziya
2 answers
  • In letzter Zeit mache ich dasselbe wie Sie. Ich bin fast erfolgreich

    1.download & amp; Konfigurieren Sie die Umgebung für build aosp 2.build aosp 3.build / external / vogar. Sie erhalten vogar unter out / host / linux-x86 / bin / vogar 4. Schreiben Sie Ihren Testcode mit Hilfe von Caliper 5. Testen Sie den Host mit vogar. Vogar --mode app_process --benchmark

    vogar kompiliert Ihren Code automatisch in die dex-Datei und Schieben Sie sie auf Gerät , um app_process aufzurufen (das den Befehl dalvikvm mit android JNI registerd aufruft), um den Testrunner für vogar auszuführen, um den Testfall auszuführen.

    oder um Ihren Testfall zu erstellen

    dvdface @ ubuntu: ~ / Source / aosp / out / host / linux-x86 / bin $ ./vogar --mode app_process --benchmark ~ / Source / aosp / libcore / benchmarks / src / benchmarks / AdditionBenchmark.java Aktionen: 1 Ausführen von [/ home / dvdface / Source / aosp / prebuilts / sdk / tools / jack, -D, jack.java.source.version = 1.8, -D, jack.android.min-api-level = o-b1, -cp, /home/dvdface/Source/aosp/out/target/common/obj/JAVA_LIBRARIES/core-libart_intermediates/classes.jack:/home/dvdface/Source/aosp/out/ target / common / obj / JAVA_LIBRARIES / core-oj_intermediates / classes.jack: /home/dvdface/Source/aosp/out/target/common/obj/JAVA_LIBRARIES/conscrypt_intermediates/classes.jack: / home / dvdface / source / aosp / out / target / common / obj / JAVA_LIBRARIES / okhttp_intermediates / classes.jack: /home/dvdface/Source/aosp/out/target/common/obj/JAVA_LIBRARIES/legacy-test_intermediates/classes.jack: / home / dvdface / aosp / out / target / common / obj / JAVA_LIBRARIES / bouncycastle_intermediates / classes.jack: /home/dvdface/Source/aosp/out/target/common/obj/JAVA_LIBRARIES/ext_intermediates/classes.jack: / home / dvdface / aosp / out / target / common / obj / JAVA_LIBRARIES / framework_intermediates / classes.jack: /home/dvdface/Source/aosp/out/target/common/obj/JAVA_LIBRARIES/telephony-common_intermediates/classes.jack: / home / dvdface / Quelle / aosp / out / target / common / obj / JAVA_LIBRARIES / mms-common_intermediates / classes.jack: /home/dvdface/Source/aosp/out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jack: / home / dvdface / Quelle / aosp / out / target / common / obj / JAVA_LIBRARIES / android.policy_intermediates / classes.jack: /home/dvdface/Source/aosp/out/target/common/obj/JAVA_LIBRARIES/services_intermediates/classes.jack: / home / dvdface / Quelle / aosp / out / target / common / obj / JAVA_LIBRARIES / apache-xml_intermediates / classes.jack: /home/dvdface/Source/aosp/out/host/linux-x86/framework/vogar.jar, --output-jack, / tmp / vogar / 24a8baa0-30f1 -4861-99c1-6660e97bf1d8 / benchmarks.AdditionBenchmark / benchmarks.AdditionBenchmark.jack, --import-resource, /tmp/vogar/24a8baa0-30f1-4861-99c1-6660e97bf1d8/benchmarks.AdditionBenchmarkexecue shell, mkdir, /data/local/tmp/vogar/run/benchmarks.AdditionBenchmark]

    Ausführen von [/ home / dvdface / Source / aosp / prebuilts / sdk / tools / jack, --output-dex-zip, /tmp/vogar/24a8baa0-30f1-4861-99c1-6660e97bf1d8/benchmarks.AdditionBenchmark/benchmarks.AdditionBenchmark.dex.jar, -D, jack.java.source.version = 1.8, -D, jack.android.min-api-level = o-b1, --multi-dex, native, - -import, /tmp/vogar/24a8baa0-30f1-4861-99c1-6660e97bf1d8/benchmarks.AdditionBenchmark/benchmarks.addditionBenchmark.jackAction Benchmarks.AdditionBenchmark-Ausführung [adb, shell, cd / data / local / tmp vogar / run / benchmarks.AdditionBenchmark & ​​amp; & lt; ANDROID_DATA = / data / local / tmp / vogar app_prozess -Djava.class.path = / data / local / tmp / vogar / run / benchmarks.AdditionBenchmark. dex.jar -Djava.io.tmpdir = / data / local / tmp / vogar / run / benchmarks.AdditionBenchmark -Duser.home = / data / local / tmp / vogar / run / user.home / data / taktuell nach / nach / takt / taktig / taktig / taktuell nach / nach / takt / taktig / taktuell nach / nach / nach / tach / temp. nach / nach / nach / tach / tachzähligem_tempo.tim_temp.tim.tim_updat/index.zu/de/aktuell_zu_de_zu_de_zuwachs_zu_zähligen_Stammkombinationen timeAddTwoLocalLongs] Instrumente: [Laufzeit] Benutzerparameter: {} Virtuelle Maschinen: [app_process] Auswahltyp: Volles kartesisches Produkt Diese Auswahl ergibt 8 Versuche. Testbericht ( 1 von 8): Experiment {instrument = Laufzeit, benchmarkMethod = timeAddConstantToLocalDouble, vm = app_process, Parameter = {}} Ergebnisse: Laufzeit (ns): min = 3.48, 1. Qu. = 3,48, Median = 3,48, Mittelwert = 3,48, 3. Qu. = 3,48, max = 3,48 Testbericht (2 von 8): Experiment {Instrument = Laufzeit, BenchmarkMethod = timeAddConstantToLocalFloat, vm = Anwendungsprozess, parameters = {}} Ergebnisse: Laufzeit (ns): min = 5,28, 1. Qu. = 5,28, Median = 5,28, Mittel = 5,28, 3. Qu. = 5,28, max = 5,28 Bericht (3 von 8): Experiment {instrument = Laufzeit, benchmarkMethod = timeAddConstantToLocalInt, vm = app_process, Parameter = {}} Ergebnisse: Laufzeit (ns): min = 2.11, 1st Qu. = 2,11, Median = 2,11, Mittelwert = 2,11, 3. Qu. = 2,11, max = 2.11 Testbericht (4 von 8): Experiment {instrument = Laufzeit, benchmarkMethod = timeAddConstantToLocalLong, vm = app_process, parameters = {}} Ergebnisse (ns): min = 2,10, 1. Qu. = 2,10, Median = 2,10, Mittel = 2,10, 3. Qu. = 2,10, Max = 2,10 | Testbericht (5 von 8): (Instrument = Laufzeit) benchmarkMethod = timeAddTwoLocalDoubles, vm = app_process, parameters = {}} Ergebnisse: Laufzeit (ns): min = 5.31, 1. Qu. = 5.31, Median = 5.31, Mittel = 5.31, 3. Qu. = 5.31 , max = 5.31 Testbericht (6 von 8): Experiment {instrument = Laufzeit, benchmarkMethod = timeAddTwoLocalFloats, vm = app_process, Parameter = {}} Ergebnisse: Laufzeit (ns): min = 5,23, 1. Qu. = 5,23, Median = 5,23, Mittel = 5,23, 3. Qu. = 5,23, Max = 5,23 Testbericht (7 von 8): Experiment {Instrument = Laufzeit, BenchmarkMethod = timeAddTwoLocalInts , vm = app_process, parameters = {}} Ergebnisse: Laufzeit (ns): min = 1.63, 1. Qu. = 1.63, Median = 1,63, Mittelwert = 1,63, 3. Qu. = 1,63, max = 1,63 Testbericht (8 von 8): Experiment {instrument = Laufzeit, benchmarkMethod = timeAddTwoLocalLongs, vm = app_process, parameters = {}} Ergebnisse: Laufzeit (ns): min = 2.14, 1. Qu. = 2.14, Median = 2.14, Mittelwert = 2.14, 3. Qu. = 2.14, Max = 2.14 8 Messungen gesammelt : <1> 1 Instrument (e) 1 virtuelle Maschine (n) 8 Benchmark (s) Ausführung abgeschlossen: 19,90 s. Instrument com.google.caliper.runner.AllocationInstrument wird nicht unterstützt auf Dalvik ignoriert Instrument com.google.caliper.runner.AllocationInstrument auf Dalvik nicht unterstützt, ignoriert Einige Studien konnten nicht hochgeladen werden. Erwägen Sie, sie manuell hochzuladen. benchmarks.AdditionBenchmark OK (SUCCESS) hat den Exit-Wert 0 vom Befehl zum Zerstören des Befehls Adb Shell /data/local/tmp/vogar/run/benchmarks.AdditionBenchmark & ​​amp; ANDROID_DATA = / data / local erhalten / tmp / vogar app_process -Djava.class.path = / data / local /

    01 April 2018
    Kevin Ding
  • Ein vollständiges Beispiel für einen Caliper-Benchmark für Android, jedoch nicht für eine Aktivität, finden Sie in Android Application Testing Guide , der auch Folgendes erklärt:

    Caliper-Benchmark wird normalerweise com.google.caliper.SimpleBenchmark die die Benchmark-Schnittstelle implementiert. Benchmarks sind in ähnlicher Weise wie bei Tests mit JUnit 3 aufgebaut und behalten dieselbe Struktur bei, mit dem Unterschied, dass Benchmarks hier mit der Präfix-Zeit beginnen als im Gegensatz zu test.

    blockquote>

    Die fraglichen Benchmarks sehen folgendermaßen aus:

     public final void timeCelsiusToFahrenheit(int reps) {
             for (int i=0; i < reps; i++) {
               for (double t: temps) {
                 TemperatureConverter.celsiusToFahrenheit(t);
               }
             }
    }
     

    Einer von Die interessantesten Funktionen sind, dass Messschieber die Benchmark-Ergebnisse hochladen und grafisch vergleichen kann

    Einfache Benchmark-Tests mit Vogar

    22 November 2011
    Diego Torres Milano