使用 Android 仪器测试测量性能

Measuring performance using Android instrumentation test

我的目标是使用工具测试 (AndroidJUnitRunner) 为 Android CPU 密集型代码编写自动性能测试。

我很惊讶的发现测试结果不靠谱,为了模拟CPU密集的代码,我想测试一下,我写了下面的循环

for(int i=0;i<1000000;i++){
    Math.pow(2,i);
}

代码已作为工具测试在 Android 应用程序中进行测试

我得到的结果如下:

仪器测试显示完成循环大约需要 230 毫秒 而同一设备 (G5) 上的相同代码耗时约 600 毫秒

我会很感激为什么在 AndroidJUnitRunner 上执行相同的代码比在真实设备上执行的时间少三倍,而它们最终都在同一设备上执行

只是速度来自 CPU,当你正在执行一些代码时,如果 CPU 没有做任何繁重的工作并且所有 CPU 核心都已启动,它将执行你的代码相当快。在 android 中,'UI rendering' 是 AndroidJUnitRunner 没有做的最密集的工作,这就是为什么它很快。

如果您想了解 android 在不同情况下的表现,请看一下:https://www.youtube.com/playlist?list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE

我认为结果不同的原因是设备在测试的同时需要做的工作不同。 (开销)。

我建议您尝试使用比AndroidJUnitRunner开销更大的测试框架。您可以 Robotium 试试看。