Skip to content

报告导出截图、CPU 命名、累计流量修正与报告可读性审视 ​

Owner 2026-11-02 在内部包 240 上提出 5 项:导出不勾截图仍有截图 ZIP;CPU 不需要显示“整机100%”;网络缺少累计流量;从产品角度审视原生报告与 Excel;与新一份 PerfDog 导出对比。

一、已实现(E2) ​

问题原因修改
不勾选截图仍导出截图 ZIPReportBundleExporter 无论是否勾选都写出并发布 .capture.zip(不勾选时为 22 字节空 ZIP)无截图(未勾选或范围内无截图)时只发布 Excel,ReportBundleResult.captures 为 nil;作业账本允许 1 个输出;导出状态显示“已保存Excel(未包含截图)”。
CPU 显示“整机100%”名称中带口径说明工作台分组改为“CPU”,曲线名“应用CPU”“整机CPU”;报告、注册表显示名、会话产物标签同步。口径说明保留在指标解释中。整机 CPU 在工作台、报告与 Excel 中本就使用按启用核心数归一化的 0–100% 值,多核累加原始值不在用户报告中展示。
缺少累计流量只有速率与“/10分钟”归一化值新增 ReportDerivedStatistics.networkTraffic:上行/下行/总流量 = 每秒速率有效采样之和 × 采样间隔(缺失秒不计);应用两方向都有记录时用应用口径,否则整机。原生报告“网络与磁盘”和“概览”新增“网络流量”卡片;Excel 概览加“总流量”,详细数据“网络(汇总)”加三项(MB)。
单位不一致原生报告用 MiB/KiB(二进制),Excel 用 MB/KB(十进制)原生报告统一为十进制 MB、KB/s,与 Excel 和 PerfDog 一致。
指标解释过时Excel“详细数据”的 FPS 类、Jank、BigJank、Stutter 解释仍是旧口径按 2026-11-02 口径改写;原生报告画面统计副标题同步。

验证:ReportExportTests、NativeReportTests、WorkbenchModelsTests、PerformanceFoundationTests 共 79 项通过(1 项按设计跳过);新增累计流量断言(应用发送 104,000 B、接收 10,000 B,缺失秒不计)与无截图不生成 ZIP 断言。

二、第二份 PerfDog 导出复算(E3) ​

PerfDog 13.0,设备 A / 目标 App A,约 54 秒(以静止为主,平均 FPS 19.37)。把其 1,046 帧逐帧数据交给 Perfowl 算法:

指标PerfDogPerfowl 算法(同一帧序列)
Jank / BigJank 次数21 / 2121 / 21
Stutter59.13%分子 31.34 秒 ÷ 53 秒 = 59.13%;以帧跨度 52.83 秒为分母发布 59.32%
1% Low / Avg(FTime) / Std(FTime)0.39 / 50.52 / 284.980.39 / 50.52 / 284.98
FTime≥100% / Delta>100ms/h3.0 / 1834.02.96 / 1840.0
FPS 类 6 项(每秒序列复算)全部全部一致
TinyJank / SmallJank 次数28 / 2631(两项同口径)
Smooth148.22301.9(不同公式)
  • PerfDog 每秒 FPS 之和等于总帧数(1,046),即“每秒 FPS = 该秒实际呈现的帧数”;静止秒记 0(54 秒中 16 秒为 0);静止后的首帧按真实间隔记录(最长 3,786 ms),因此曲线不断。
  • Perfowl 240 当场(不同时间窗,约 86 秒):报告 FPS 类来自 Graphics CoreAnimationFramesPerSecond,约每 0.5 秒一个值(80 秒 159 个),并非每秒;工作台/CSV 的 FPS 来自逐帧窗口,静止超过 2 秒标 stale-device-source 留空(80 行中 21 行);帧耗时 > 200 ms 按 source-gap 留空(15 行)。因此同一份报告出现两个“平均 FPS”(38.08 与 28.35)。

三、产品审视结论(待 Owner 决策的项单列) ​

原生报告:

  1. 同屏两个平均 FPS(概览 38.08、画面统计 28.35)来源不同,用户无法判断哪个对——需统一为一个“每秒 FPS”。
  2. 画面统计 18 张卡片同等权重,每张重复“已记录帧区间 79.18 秒”;TinyJank 与 SmallJank 数值相同却分两张;Smooth 无方向说明。建议分“核心(平均 FPS、Jank、BigJank、Stutter、1% Low)”与“更多统计”两层。
  3. 右侧“时刻详情”未悬停时整列显示“—”,信息噪声大;中英文混用(FTime、Frame Time P95、Frame Pacing Jitter)。
  4. 头部显示型号代码(如 iPhone15,3),应显示商品名。

Excel: 5. 数值未格式化(如 5.86668617391414、测试时长 86.957000017 秒、CPU 核心数 6.0),应统一保留 2 位小数,时长显示为 分:秒。 6. FPS 类在“采样分布”与“帧统计”两组重复且数值不同(如 FPS≥18 为 62.7% 与 52.2%)。 7. 缺少 PerfDog 最有用的逐秒数据表(每秒一行:FPS、Jank、CPU、内存、网络、GPU、温度等)与逐帧表;2026-10-28 Owner 曾决定 Excel 只保留“概览/详细数据”两页,是否恢复需 Owner 决定。 8. 应用虚拟内存(约 423,000 MB)、整机网络发送(含测试链路流量)对普通用户无意义或易误导,建议默认不进概览/详细数据的主体。

待 Owner 决策:

  • A. iOS 26 帧链首尾相接时,静止秒的 FPS 记 0、静止后首帧按真实间隔发布(与 PerfDog 一致);帧链断开时仍留空。这会修改 2026-10-16“静止不补零”的规则。
  • B. 统一 FPS:以逐帧事件按秒计数作为唯一的每秒 FPS(工作台、报告、Excel 共用),Graphics FPS 只作兜底。
  • C. Excel 是否恢复逐秒数据表(及逐帧表)。

Perfowl · Performance Observer