应用基准测试

基准测试是一种检查和监控应用性能的方法。您可以定期运行基准测试来分析和调试性能问题,并帮助确保您不会在最近的更改中引入回归。

Android 提供了两个基准测试库和方法来分析和测试应用中不同类型的情况:宏基准测试和微基准测试。

宏基准测试

宏基准测试 库测量较大的最终用户交互,例如启动、与 UI 交互和动画。该库可直接控制您正在测试的性能环境。它允许您控制编译,并允许您启动和停止应用以直接测量实际的应用启动或滚动。

宏基准测试库从使用您的测试构建的测试应用外部注入事件并监控结果。因此,在编写基准测试时,您不会直接调用应用代码,而是像用户一样在应用中导航。

微基准测试

微基准测试 库允许您在循环中直接对应用代码进行基准测试。这旨在衡量评估最佳性能的 CPU 工作——例如预热 Just in Time (JIT) 和缓存的磁盘访问——您可能会在内部循环或特定热函数中看到。该库只能衡量您可以在隔离状态下直接调用的代码。

如果您的应用需要处理复杂的数据结构,或者具有一些在应用运行期间多次调用的特定计算密集型算法,这些可能是进行基准测试的好案例。您还可以衡量 UI 的部分内容。例如,您可以衡量 RecyclerView 项目绑定的成本、布局膨胀需要多长时间,或者从性能角度来看,View 类的布局和测量传递有多么苛刻。

但是,您无法衡量基准测试用例对整体用户体验的贡献。在某些情况下,基准测试并不能告诉您是否改进了卡顿或应用启动时间等瓶颈问题。因此,至关重要的是,首先使用Android Profiler识别这些瓶颈。找到要调查和优化的代码后,基准测试循环可以以快速简便的方式重复运行,以创建更少的噪声结果,从而让您专注于一个改进领域。

Microbenchmark 库仅报告有关您的应用的信息,而不是有关整个系统的信息。因此,它最适合分析特定于应用的情况的性能,而不是可能与整体系统问题相关的性能。

基准库比较

宏基准测试 微基准测试
API 版本 23 及更高版本 14 及更高版本
功能 衡量高级入口点或交互,例如活动启动或滚动列表。 衡量单个函数。
范围 完整应用的进程外测试。 CPU 工作的进程内测试。
速度 中等迭代速度。可能超过一分钟。 快速迭代速度。通常少于 10 秒。
跟踪 结果附带性能分析跟踪。 可选方法采样和跟踪。