EmuLabZip logo EmuLabZip

性能

最后更新 · 在 GitHub 上编辑此页

Performance 工具会在打开期间对所选应用和设备采样,并以实时图表显示最近两分钟的数据。在工具栏中选择应用;如果不选,则只显示整个设备的数值。

测量内容#

数值AndroidiOS 模拟器
应用 CPU/proc/<pid>/stat 的用户 + 系统时间,以占所有核心的比例表示主机进程的 CPU 时间(ps),以占 Mac 所有核心的比例表示
设备 CPU/proc/stat,所有核心的忙碌时间—(模拟器共享 Mac 的 CPU)
应用内存常驻集大小(VmRSS)主机进程的常驻集大小
设备内存/proc/meminfo 中的 MemTotal − MemAvailable—
帧率每秒渲染的帧数,来自 dumpsys gfxinfo第 4 阶段,使用 Instruments 追踪
卡顿帧自上次采样以来卡顿帧的占比第 4 阶段
电池来自 dumpsys battery 的电量和温度—

每次 Android 采样都是一次 adb shell 调用,一次性运行所有命令,因此每 500 ms 采样一次的开销依然很低。每次采样都会查找应用的进程 id:应用重启后,图表会继续显示新进程的数据。

如何读图#

  • CPU 百分比是占整个设备的比例,与 Android Studio 的显示方式一致。在 4 核模拟器上,一个核心满载就是 25%。
  • 帧率只在应用绘制时才会变化。静止的屏幕不渲染任何帧,这是好事。
  • 卡顿帧是错过截止时间的帧,由平台的 gfxinfo 统计。
  • 将鼠标悬停在图表上可读取精确数值。只有一个数据系列的图表没有图例;标题会说明它显示的数值。

控件#

控件作用
0.5 s · 1 s · 2 s两次采样之间的间隔。
Pause停止采样;图表保留已有的数据。
Clear(垃圾桶)清空图表。

离开该工具时采样会停止,因此它不会在后台运行。

图表下方有两张按需测量的卡片:Start time(指南)和 Energy(指南)。两者在运行期间都会改动设备(应用会被停止并重新打开;电池在电池服务看来被拔掉了电源),结束后会还原。

通过命令行#

emulabzip perf --app com.example.app
emulabzip perf --app com.example.app --interval 500 --json | jq .appCpu