我想为android编写简单的基准测试软件。我研究并找到了Caliper + Vogar。但是没有关于它们的例子。有人用吗?我需要简单的代码来从android Activity调用Caliper Benchmarks。
感谢您的帮助。
答案 0 :(得分:0)
有一个完整的Android版Caliper Benchmark示例,虽然不适用于Android Application Testing Guide的活动,但也解释了:
Caliper基准测试通常会扩展com.google.caliper.SimpleBenchmark 它实现了Benchmark接口。基准的结构是 与JUnit 3类似的方式测试并保持相同的结构 区别在于这里的基准测试以前缀时间为开头 反对测试。
有问题的基准看起来像这样:
public final void timeCelsiusToFahrenheit(int reps) {
for (int i=0; i < reps; i++) {
for (double t: temps) {
TemperatureConverter.celsiusToFahrenheit(t);
}
}
}
最有趣的功能之一是卡尺可以上传基准测试结果,您可以用图形比较它们
答案 1 :(得分:-1)
最近,我和你做同样的事情 我几乎成功了
1.download&amp;配置构建aosp的环境 2.build aosp 3.build / external / vogar,你将获得out / host / linux-x86 / bin / vogar下的vogar 4.使用卡尺编写测试代码 5.run你用vogar测试主机 vogar --mode app_process --benchmark
vogar会自动将您的代码编译为dex文件 并将它们推送到设备 调用app_process(将调用带有android JNI的dalvikvm命令)运行vogar测试运行器来运行你的测试用程序
vogar需要您指定的类路径来编译或构建您的测试用例
dvdface @ ubuntu:〜/ Source / aosp / out / host / linux-x86 / bin $ ./vogar --mode app_process --benchmark 〜/源/ AOSP / libcore /基准/ SRC /基准/ AdditionBenchmark.java 行动:1执行 [/ 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 / dddface / Source / aosp / out / target / common / obj / JAVA_LIBRARIES / core-libart_intermediates / classes.jack:/ home / dddface / 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:/家庭/ dvdface /来源/ AOSP /出/目标/普通/ OBJ / JAVA_LIBRARIES /okhttp_intermediates/classes.jack:/home/dvdface/Source/aosp/out/target/common/obj/JAVA_LIBRARIES/legacy-test_intermediates/classes.jack:/home/dvdface/Source/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/Source/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/Source/aosp/out/target/common / OBJ / JAVA_LIBRARIES / MMS-common_intermediates / CLAS ses.jack:/home/dvdface/Source/aosp/out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jack:/家庭/ dvdface /来源/ AOSP /出/目标/普通/ OBJ / JAVA_LIBRARIES /机器人。 policy_intermediates / classes.jack:/home/dvdface/Source/aosp/out/target/common/obj/JAVA_LIBRARIES/services_intermediates/classes.jack:/家庭/ dvdface /来源/ AOSP /出/目标/普通/ 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.AdditionBenchmarkexecuting [adb,shell,mkdir, /data/local/tmp/vogar/run/benchmarks.AdditionBenchmark]
执行[/ 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.AdditionBenchmark.jackAction benchmarks.AdditionBenchmark执行[adb,shell,cd /data/local/tmp/vogar/run/benchmarks.AdditionBenchmark&&&&&& ANDROID_DATA = / data / local / tmp / vogar app_process -Djava.class.path = /数据/本地的/ tmp /沃加尔/运行/ benchmarks.AdditionBenchmark.dex.jar -Djava.io.tmpdir = /数据/本地的/ tmp /沃加尔/运行/ benchmarks.AdditionBenchmark -Duser.home = / data / local / tmp / vogar / run / user.home /data/local/tmp/vogar/run/benchmarks.AdditionBenchmark vogar.target.TestRunn实验选择: 基准测试方法:[timeAddConstantToLocalDouble,timeAddConstantToLocalFloat,timeAddConstantToLocalInt, timeAddConstantToLocalLong,timeAddTwoLocalDoubles, timeAddTwoLocalFloats,timeAddTwoLocalInts,timeAddTwoLocalLongs] 仪器:[运行时] 用户参数:{} 虚拟机:[app_process] 选择类型:全笛卡尔产品 该选择产生8个实验。 审判报告(第1页,共8页): 实验{instrument = runtime,benchmarkMethod = timeAddConstantToLocalDouble,vm = app_process, 参数= {}} 结果: 运行时间(ns):min = 3.48,1st qu。= 3.48,median = 3.48,mean = 3.48,3rd qu。= 3.48,max = 3.48 审判报告(2/8): 实验{instrument = runtime,benchmarkMethod = timeAddConstantToLocalFloat,vm = app_process, 参数= {}} 结果: 运行时间(ns):min = 5.28,1st qu。= 5.28,median = 5.28,mean = 5.28,3rd qu。= 5.28,max = 5.28 审判报告(3/8): 实验{instrument = runtime,benchmarkMethod = timeAddConstantToLocalInt,vm = app_process, 参数= {}} 结果: runtime(ns):min = 2.11,1st qu。= 2.11,median = 2.11,mean = 2.11,3rd qu。= 2.11,max = 2.11 审判报告(4/8): 实验{instrument = runtime,benchmarkMethod = timeAddConstantToLocalLong,vm = app_process, 参数= {}} 结果: 运行时间(ns):min = 2.10,1st qu。= 2.10,median = 2.10,mean = 2.10,3rd qu。= 2.10,max = 2.10 审判报告(5/8): 实验{instrument = runtime,benchmarkMethod = timeAddTwoLocalDoubles,vm = app_process,parameters = {}} 结果: 运行时间(ns):min = 5.31,1st qu。= 5.31,median = 5.31,mean = 5.31,3rd qu。= 5.31,max = 5.31 审判报告(6/8): 实验{instrument = runtime,benchmarkMethod = timeAddTwoLocalFloats,vm = app_process,parameters = {}} 结果: 运行时间(ns):min = 5.23,1st qu。= 5.23,median = 5.23,mean = 5.23,3rd qu。= 5.23,max = 5.23 审判报告(7/8): 实验{instrument = runtime,benchmarkMethod = timeAddTwoLocalInts,vm = app_process,parameters = {}} 结果: 运行时间(ns):min = 1.63,1st qu。= 1.63,median = 1.63,mean = 1.63,3rd qu。= 1.63,max = 1.63 审判报告(8/8): 实验{instrument = runtime,benchmarkMethod = timeAddTwoLocalLongs,vm = app_process,parameters = {}} 结果: 运行时间(ns):min = 2.14,1st qu。= 2.14,median = 2.14,mean = 2.14,3rd qu。= 2.14,max = 2.14 从以下收集的8个测量值: 1台仪器 1台虚拟机 8个基准 执行完成:19.90秒。 Dalvik不支持仪器com.google.caliper.runner.AllocationInstrument,忽略 Dalvik不支持仪器com.google.caliper.runner.AllocationInstrument,忽略 有些试验无法上传。考虑手动上传它们。 benchmarks.AdditionBenchmark OK(SUCCESS)收到退出值0 销毁命令adb shell cd /data/local/tmp/vogar/run/benchmarks.AdditionBenchmark&&&&&& ANDROID_DATA = / data / local / tmp / vogar app_process -Djava.class.path = /数据/本地的/ tmp /沃加尔/运行/ benchmarks.AdditionBenchmark.dex.jar -Djava.io.tmpdir = /数据/本地的/ tmp /沃加尔/运行/ benchmarks.AdditionBenchmark -Duser.home = / data / local / tmp / vogar / run / user.home /data/local/tmp/vogar/run/benchmarks.AdditioMoving /data/local/tmp/vogar/run/benchmarks.AdditionBenchmark/benchmarks.AdditionBenchmark.2018-04-01T15:43:17Z.json to ./vogar-results结果:1。全部成功。花了10分35秒。