性能监控
性能监控在设备运行时采样并成图。它是大多数人最先打开的模块,也是“把数字读对”最要紧的模块。
开始一次采集
Section titled “开始一次采集”- 选中设备,把范围收到某个 App。
- 打开 性能监控。
- 点开始,在设备上操作 App,点停止。
图表是实时的;采集结果是你留下来的东西。
以单核百分比计,所以在多核设备上超过 100% 很正常,只表示不止一个核在忙。要看的是形状:滑动时稳定在 40% 是一份工作量;基线 5% 突然冲到 90% 持续 200 毫秒,那是一次卡住。
GPU 占用率。GPU 高但帧率稳,没问题;GPU 高而帧率在掉,说明你是渲染瓶颈 —— 过度绘制、层级太多、强制离屏渲染的特效。
进程的常驻内存。看趋势而不是看数值:锯齿形回落到同一条底线是正常的缓存工作;台阶形一路上去不回来是泄漏。iOS 会杀掉涨得太狠的进程,而这种杀死在崩溃报告里看起来就是一次没有异常信息的崩溃。
实际呈现的帧数。见帧率与卡顿 —— 平均值单独看几乎没有意义,下陷才是全部故事。
进程的收发字节数。这是流量,不是内容 —— 性能模块只统计,不解读。一个好用的判断:某个页面打开就拉几兆,在这条曲线上会比任何人去翻请求都更早暴露。要看请求本身,用网络抓包模块。
给出的是能耗影响值而不是毫安时。它适合用来做对比 —— 这一版对上一版、你的 App 对另一个 App —— 而不适合当绝对值用。要跨天的绝对答案,看使用记录。
对比两个 App
Section titled “对比两个 App”在两个 App 上采集同一段交互,把两次结果并排看。这是回答“我们的 App 是不是很重”唯一诚实的方式,因为“重”只有相对于某个东西才有意义。
小程序跑在宿主 App 里,所以统计宿主等于统计宿主加上里面的一切。问题是关于小程序的时候,把范围收到小程序自己的进程上。
别把自己骗了
Section titled “别把自己骗了”- 每次采同一段交互。 同一个列表、同样的距离。两段不同交互的采集不构成对比。
- 让设备先稳定下来。 启动后的头几秒被冷启动工作主导。
- 注意发热。 发烫的手机会降频,降频后的采集描述的是温度而不是代码。
- 用真实机型,不是最新款。 你桌上的旗舰不是用户手里的机器。
免费档的边界
Section titled “免费档的边界”性能总览免费。性能图表和性能历史是付费的,见价格。
