外观
2026-11-02 · 当前口径(按 PerfDog 对照修正)
以下三处覆盖本页更早的同名公式描述;旧描述与历史验收数字保留为历史记录。
- Jank / BigJank(
jank.perfdog-dedup.v3/big-jank.perfdog-dedup.v3):在原条件(前 3 帧齐备、3d > 2(a+b+c)、d > 83.33 ms/> 125 ms,整数 ns 严格比较)之上,前 3 帧中已有 Jank 帧时,本帧不再计为 Jank / BigJank,避免一次长卡顿被连续重复计数。 - Stutter(
stutter.jank-frame-time-share.v2):Stutter[%] = Σ(计入的 Jank 帧耗时) ÷ 观察时长 × 100。观察时长仍为各来源 epoch 首末帧跨度之和。旧版是 Jank 帧超出基线部分之和(E3/3T)。 - 报告中的 FPS 类统计:Avg / Median / Std / Var / FPS≥18 / FPS≥25 / MedRange / Drop(FPS) 一律按产品每秒 FPS 序列计算;
Drop(FPS)[/h] = 相邻两秒 FPS 下降 > 8 的次数 ÷ (末秒 − 首秒) × 3600。逐帧汇总里的同名值只作诊断,不再写入报告。 - 回归基准:PerfDog 13.0 自身导出的 3,483 帧与 48 个每秒 FPS 值(iOS 26、120 Hz)。Jank 21、BigJank 19 与 PerfDog 完全一致;FPS 类 8 项一致到导出精度;Stutter 分子一致,分母差异来自观察窗口(PerfDog 用每秒数据跨度 47 秒,Perfowl 用帧跨度约 48 秒,发布值 12.82% 对 13.09%)。TinyJank / SmallJank 与 Smooth 未改。方案与实现
2026-11-02 · 与 PerfDog 数值对照(E3,同设备离线复算)
用 PerfDog 13.0 导出的逐帧帧耗时(设备 A,iOS 26,120 Hz,约 48 秒滑动)直接喂给 Perfowl 帧统计算法:
- FPS 类按每秒 FPS 计算:Avg / Median / Std / Var / FPS≥18 / FPS≥25 / MedRange(中位 ±20%)/ Drop(FPS)(相邻两秒下降 > 8 的次数 ÷ (秒数−1) × 3600)用 PerfDog 每秒 FPS 列复算全部精确一致。
- 1% Low、Avg/Std(FTime)、FTime≥100%、Delta(FTime)>100ms 与 PerfDog 一致或只差窗口起点。
- Jank / BigJank:PerfDog 在前 3 帧中已有 Jank 帧时不再把当前帧计为 Jank。Perfowl 现行公式没有这条,同一序列多算约 25%(27/25 对 21/19);加上后总数完全一致。
- Stutter:PerfDog ≈ 去重后 Jank 帧耗时之和 ÷ 总时长(复算 13.02%,PerfDog 13.09%),现行 Perfowl 为 Jank 帧超出基线部分之和(13.88%)。
- TinyJank / SmallJank 与 Smooth 口径仍未复现。
判断方法:拿到任何参考工具的逐帧导出时,先把同一帧序列交给 Perfowl 算法复算,再比较汇总;只有同输入同结果,差异才归因于采集。上述修正先改公式文档再改实现,历史验收数字不回改。对照记录
2026-10-28 · 第二轮对照试用增量
Collector帧标量现在标为“已记录帧片段,不代表Session全程”,显示frameSummary.durationMs与真实source;缺时长标未知,未映射起止不伪造选区。默认摘要仍取产品1Hz有效点均值,不使用启动约数秒的帧片段替代整场。启动后帧continuation恢复为既有串行有界路径,尚待第二轮真机验证;historical旧片段不重写。
正式55/66、11项暂停不变。本批软件/主机证据不是新增真机验收。第二轮方案与实现。
2026-10-28 · 报告衍生统计展示合同
同日紧凑版增量:Owner将默认Excel改为概览/详细数据两页,删除趋势和逐帧页;封存Jank、Stutter、1% Low等值仍在关键概览及详细数据中,分母在帧统计分类标题说明,解释附在对应行。逐帧原件留会话,不删除、不改采集/计算公式。当前两页布局优先于下方四页实施快照;E2软件与旧数据核同不提升55/66。紧凑版实施。
普通报告及Excel直接展示已封存的Jank、Stutter、1%Low、Smooth等帧统计,不再仅在诊断页可见。分母取已记录帧区间,不能把每10分钟率当作逐秒次数,也不能把旧启动片段写成全程。选区没有逐帧端点映射时不借用全程值。产品1Hz FPS均值/阈值/总体方差/标准差/中位数及中位±20%占比采用同一有效点总体,和原生帧间隔平均FPS分列;Drop(FPS)尚未闭合具体映射时不以逐帧丢帧率顶替。CPU、内存不改公式;无源缺值仍留空。本批新增E2软件/保存数据核对,未新增手机验收;实施及证据见报告补全记录,不提升55/66验收状态。
Frame Experience:Jank、Stutter 与稳帧指标
最新专项验收 · 2026-10-25: 正式52/66、剩14项。Smooth新独占完整5/5通过,34,077完整源/34,054准入间隔、600/600源健康槽及908行消费者核同;整数ns中位秩与RMS、全部摘要及原件SHA一致(E4本场景正常性)。标记NO_REFERENCE_ACCEPTED_OWNER_POLICY、referenceAccuracyValidated=false、ownerReviewRequired=false;下一进程总能耗成本。同步/网站/Webhook欠项单列,公证暂缓,仅内部测试。 结果。以下带日期旧项为历史。
最新专项验收 · 2026-10-24: 正式51/66、剩15项。TinyJank(/10min)新独占完整5/5通过,34,068完整源/34,052准入间隔、600/600源健康槽及874行消费者核同;严格C及完整epoch观察T、所有摘要和原件SHA核同(E4本场景正常性)。标记NO_REFERENCE_ACCEPTED_OWNER_POLICY、referenceAccuracyValidated=false、ownerReviewRequired=false;下一Smooth。同步/网站/Webhook欠项单列,公证暂缓,仅内部测试。 结果。以下带日期的旧项进度为历史记录。
最新专项验收 · 2026-10-24: 正式50/66、剩16项。Stutter(%)新独占完整5/5通过,34,076完整源/34,058准入间隔、600/600源健康槽及904行消费者核同;精确额外等待E3及完整epoch观察T、所有摘要和原件SHA核同(E4本场景正常性)。标记NO_REFERENCE_ACCEPTED_OWNER_POLICY、referenceAccuracyValidated=false、ownerReviewRequired=false;下一TinyJank(/10min)。同步/网站/Webhook欠项单列,公证暂缓,仅内部测试。 结果。以下带日期的旧项进度为历史记录。
最新专项验收 · 2026-10-24: 正式49/66、剩17项。BigJank(/10min)新独占完整5/5通过,34,081完整源/34,070准入间隔、600/600源健康槽及884行消费者核同;严格C及完整epoch观察T、所有摘要和原件SHA核同(E4本场景正常性)。标记NO_REFERENCE_ACCEPTED_OWNER_POLICY、referenceAccuracyValidated=false、ownerReviewRequired=false;下一Stutter(%)。同步/网站/Webhook欠项单列,公证暂缓,仅内部测试。 结果。以下带日期的旧项进度为历史记录。
最新专项验收 · 2026-10-24: 正式48/66、剩18项。Jank(/10min)新独占完整5/5通过,34,075完整源/34,054准入间隔、600/600源健康槽及859行消费者核同;严格C及完整epoch观察T、所有摘要和原件SHA核同(E4本场景正常性)。标记NO_REFERENCE_ACCEPTED_OWNER_POLICY、referenceAccuracyValidated=false、ownerReviewRequired=false;下一BigJank(/10min)。同步/网站/Webhook欠项单列,公证暂缓,仅内部测试。 结果。以下带日期的旧项进度为历史记录。
最新专项验收 · 2026-10-24: 正式47/66、剩19项。SmallJank(/10min)新独占完整5/5通过,34,042完整源/34,020准入间隔、600/600源健康槽及875行消费者核同;严格C及完整epoch观察T、所有摘要和原件SHA核同(E4本场景正常性)。标记NO_REFERENCE_ACCEPTED_OWNER_POLICY、referenceAccuracyValidated=false、ownerReviewRequired=false;下一Jank(/10min)。同步/网站/Webhook欠项单列,公证暂缓,仅内部测试。 结果。以下带日期的旧项进度为历史记录。
作用域属性:foreground-device
页面职责:只定义建立在有效 FrameTime 序列之上的体验派生指标,不再把某一个底层采集服务写死为体验算法的一部分。
FrameTime、FPS、P95、Refresh Rate 与 Pacing Jitter 的事实定义统一见 Display Performance。本页关心的是:在已经有可信逐帧 presentation 序列之后,如何描述用户感受到的长尾、顿挫与稳定性。
当前实现边界
当前新 Session 的 FrameTime 主路径已经切到 ActivityTrace / CoreAnimation FrameLifetime;旧 CoreProfile Presented Frame decoder 仅保留历史 Session、legacy replay 与受控对照能力。底层 iOS 17 FrameLifetime source 已有 E4 POC,该句所述R7待验是早期切源阶段快照;10月16日静帧/动画恢复及后续逐项E4结果见本页日期增量,跨系统及完整长稳门仍独立开放。体验算法只依赖标准化后的 valid FrameTime 序列,因此 source 演进不应改变 Jank/Stutter 的公式合同。
平均FPS当前合同 · 2026-10-23
2026-11-02 起:报告中的该项改按每秒 FPS 序列计算(`per-second-fps.v1`,与 PerfDog 一致);下文为旧合同历史记录。[口径修正](/devlog/p6-perfdog-parity-formula-fix-2026-11-02)
ios.frame.fps.average衡量全部已准入帧间隔上的会话平均内容帧率,scope为foreground-device、unit为frames-per-second。它是会话统计,不是每秒FPS读数的算术平均。当前正式5/5、整体39/66,新五轮E4本场景正常性通过,按无完整独立参考政策标记,物理精度未校准。当前方案。
底层为com.apple.instruments.server.services.activitytracetap/DTX ;pymobiledevice3 11.3.1 ActivityTraceTap提供传输,Perfowl自研ActivityTraceFrameLifetimeRawAdapter和FrameLifetimeDecoder.decode解码;_FrameAccumulator.summary、analyze_display_frames及统计报告派生平均FPS。Registry 兼容版本为frame-report.candidate.v3,ActivityTrace当前实际摘要为frame-report.candidate.v4,准入另标frame-statistics-admission.v2。
令每条可准入原生间隔d_i=floor((endMachTicks-previousPresentationMachTicks)×numer/denom)纳秒,FrameTime为round(d_i/1_000_000,6)ms。N条间隔之和S纳秒时,AvgFPS=N×1_000_000_000/S=1000/mean(FrameTimeMs);不以Session墙钟替代S,不对每秒FPS取算术均值,无额外四舍五入。N=0则null,N>0且S>0才是有限正值,0不是此派生统计的合法测量值。
现有v2准入允许valid/candidate/candidate-alias/degraded/partial且必须有合法递增时间和有限正FrameTime;实际ActivityTrace缺FrameTime不从时间戳补算。warmup 、未知/断链/source-gap、后台、missing 、非法/布尔/非有限或非正值不计入。候选与降级数量、完整过渡/尾部仍保留,不能通过删除不利点缩分母;边界重置不跨生命/epoch/重连/显示推算。该明确准入列表比早期“只消费valid”表述精确,未改变产品算法。
独立Raw复算只证明公式、准入与产品数据链一致,不等于独立物理精度。测试App的Metal presented时间必须对全部实际统计间隔建立完整同层、同窗及前驱/端点对应,才可作完整参考;局部或仅正常阶段吻合不足。2026-10-23已完成本指标全Session预核:完整Metal参考不合格;当前环境限定无完整对照的决定与新五轮准入见本页日期增量,不继承Jitter结论。
FPS≥18占比当前合同 · 2026-10-23
2026-11-02 起:报告中的该项改按每秒 FPS 序列计算(`per-second-fps.v1`,与 PerfDog 一致);下文为旧合同历史记录。[口径修正](/devlog/p6-perfdog-parity-formula-fix-2026-11-02)
ios.frame.fps.at_least_18_percent是foreground-device的会话级间隔计数百分比,单位percent。全部v2准入原生间隔N中,H满足18×floor(ΔMach×numer/denom)≤1e9,结果100H/N;N=0为null,真实H=0/N>0可为0%,H=N可为100%。不先取整FPS,不用1Hz曲线、平均FPS判断或时长加权替代计数。阈值相邻55,555,555/55,555,556ns分别通过/不通过。底层来源、v4实际算法与v2准入同本页平均FPS合同;全统计消费者对应fpsAtLeast18Percent及FPS>=18[%],coverage sampleCount=N。当前a03完整5/5正式通过、整体40/66;本指标完整Metal实际检查不合格,按NO_REFERENCE_ACCEPTED_OWNER_POLICY标记通过,物理精度未校准;旧a01/a02未完成不拼接。独立方案。
FPS≥25占比当前合同 · 2026-10-23
2026-11-02 起:报告中的该项改按每秒 FPS 序列计算(`per-second-fps.v1`,与 PerfDog 一致);下文为旧合同历史记录。[口径修正](/devlog/p6-perfdog-parity-formula-fix-2026-11-02)
ios.frame.fps.at_least_25_percent,foreground-device、percent。H25为全部准入原生间隔N中满足25×floor(ΔMach×numer/denom)≤1e9的个数,P25=100H25/N;边界40,000,000ns通过、40,000,001ns不通过。N=0 null,H=0/N>0时0%合法,H=N时100%合法;不先取整或换成时间权重/平均值/1Hz读数占比。来源与v4/v2合同同本页平均FPS,消费者fpsAtLeast25Percent及FPS>=25[%]、coverage=N。当前新完整5/5正式通过、整体41/66;完整Metal参考实际未合格,NO_REFERENCE_ACCEPTED_OWNER_POLICY,referenceAccuracyValidated=false、ownerReviewRequired=false;不扩大物理精度范围。专项方案。
FTime≥100ms占比当前合同 · 2026-10-24
ios.frame.ftime_ge_100_percent,foreground-device、percent。H100=count(d≥100,000,000ns),d=floor(ΔMach×numer/denom),完整N为全部准入原生间隔,P100=100H100/N;99,999,999ns不计入,100,000,000和100,000,001ns计入。N=0 null,H=0/N>0合法0%,H=N合法100%;不换成时间权重、平均FrameTime或1Hz读数占比。来源activitytracetap/DTX、pymobiledevice3传输及自研FrameLifetime decoder,v4报告/v2准入沿用本页;消费者frameTimeAtLeast100Percent、FTime>=100[%]及coverage=N。新完整5/5正式通过、整体42/66,NO_REFERENCE_ACCEPTED_OWNER_POLICY,referenceAccuracyValidated=false、ownerReviewRequired=false。自有Lab32用160ms刺激验证正例及恢复,不把睡眠或回调当上屏真值。实际完整参考有缺失/额外端点,不缩分母校准。专项方案。
当前选择与来源登记 · 2026-10-06
G59源码修复把本页14项体验统计加入可见的Display Performance采集分组;该组保留5项显示事实,总计19项请求。默认10组并集26→40,全部非启动可见分组并集40→54。这是采集范围修复,不是新增14条live曲线,也不把会话派生统计当每秒原生采样。
当前帧报告来源登记为ActivityTrace FrameLifetime + frame-pipeline派生层;旧family兼容键不代表新Session重新依赖Startup CoreProfile。原14项公式/单位/foreground-device范围、有效帧准入与missing/candidate规则均未改变。未获得帧输入时仍unsupported/missing,不以选择成功当数值有效。
本批仅E2映射与来源/回归证据;尚未装入当前b122,需新b123签名公证包覆盖安装后做真实同窗和固定五轮。完整54项独立精度与100%门仍未通过;电池USB条件与无仪器缺口不绕过。来源与结果。
输入契约摘要
| 要素 | Frame Experience 合同 |
|---|---|
| 定义 / 概念 | 对有效 FrameTime 序列进行长尾、卡顿、稳定性与体验损害派生 |
| Scope | foreground-device |
| Unit / 单位 | FrameTime 为 ms;Jank 为 count/10min;Stutter 为 %;其他指标按各自 Registry 合同 |
| 系统服务 / 服务、通道 | 体验算法本身不拥有独立采集服务;它消费 Display Performance 标准帧事实。当前新 Session 的基础帧事实来自 ActivityTrace FrameLifetime |
| 采集调用 / 命令/实现 | 不直接打开 DVT channel;由标准化 DisplayFrame/FrameTime 事件驱动派生计算 |
| 公式 / 计算方式 | 动态基线、Jank 三档、Stutter、1% Low 等见下文 |
| 质量 / missing | 只消费 valid FrameTime;warmup、discontinuity、not-foreground、missing 不进入体验统计 |
| 证据 E1–E4 | 体验公式已有既有验证;ActivityTrace source 的 iOS 17 POC 为 E4,但当前产品端到端 Display E4 仍 Pending |
1. 为什么平均 FPS 会骗人
一个 Session 即使平均 FPS 很高,也可能夹杂少数 80–300ms 的长间隔。用户会清楚感到顿挫,但平均值会把异常稀释。因此体验层至少同时观察:
text
FrameTime distribution
+ 1% Low FPS
+ Jank family
+ Stutter %
+ Smooth / stability2. FrameTime 输入与动态基线
设第 n 个有效 presentation 间隔为 FT_n。体验算法不重新采集 FrameTime,而是消费 Display Performance 已完成连续性门禁后的有效序列。
动态基线:
动态倍数门槛:
边界、warmup、reconnect、前后台和多 Display 的断链规则由 Display Performance 负责;无效/缺失点不进入体验统计。
3. TinyJank / Jank / BigJank
当前 Perfowl 合同采用“动态基线 + 绝对时间门槛”:
| 指标 | 当前判定 |
|---|---|
| TinyJank | FT_n > 2 × B_n 且 FT_n > 41.67ms |
| Jank | FT_n > 2 × B_n 且 FT_n > 83.33ms,且前 3 帧中没有 Jank(2026-11-02 起) |
| BigJank | 满足 Jank 的全部条件且 FT_n > 125ms(2026-11-02 起同样去重) |
“前 3 帧中没有 Jank”是 2026-11-02 按 PerfDog 对照加入的去重条件:一次长卡顿后的几帧通常也很慢,没有这条会把同一次卡顿重复计数。TinyJank 暂未加入,口径仍待对照。这些是 Perfowl 当前体验算法,不等同 Apple Hitch。尤其不要把“跨多个 refresh interval”直接翻译成物理 dropped frame 数。
2026-10-24 · SmallJank严格边界与连续基线(E2)
ios.frame.small_jank_per_10min(SmallJank(/10min),foreground-device,count-per-10-minutes)当前专项:原生ns间隔d与前三个连续准入间隔a/b/c比较,只有3d>2(a+b+c)且24d>10⁹才计一次。绝对门是1000/24ms,表中的41.67ms仅显示约数。严格等号不得计数;实际Decoder已复现Double误计并改用规范ns/有理比较,版本small-jank.strict-rational-ns.v2。R=600×10⁹×C/T,T为各sourceEpoch完整观察端点跨度之和,不以有效间隔和或健康槽缩分母。C=0且有合法间隔/T>0是合法0,否则缺失null;断点清比较历史,累计C和完整观察窗保留。
兼容输入须区分精度:Decoder规范六位毫秒恢复nearest-even整数ns,其它legacy Double保留as_integer_ratio精确有理值。把非规范1000/24ms也取整到ns会越过严格绝对门;完整回归已发现该问题,失败保留并最小修正,不能以改oracle规避。在线不接受isSmallJank覆盖,原生源不携带该派生标记;旧checkpoint缺分类版本拒绝恢复,须从原始源离线重算,不能将旧累计C标成新版本。TinyJank现为共享计数别名,随修复传播分类标签,但本项不顺带验收该指标。Swift非默认阈值不标新版本,旧JSON标签为nil。26项聚焦Python与47项Swift软件控制通过E2,完整回归/效率/新包及新参考、五轮尚待;SmallJank正式0/5,总46/66。方案与失败记录。
2026-10-24 · 相同卡顿计数不代表相同归一化率(E4观察)
SmallJank新五轮过程中,前两轮都计到116次,但完整sourceEpoch端点观察跨度分别为141039399042ns和170965744291ns,归一化率分别为493.479130和407.099096次/10分钟。计数和跨度均与独立原生重算及所有消费者一致。负载结束后的静态画面不保证继续产生呈现事件,实际端点及过渡/停止尾部决定T;上述差异本身不能直接判作计数异常,也不能固定除以140秒让两轮率相同。复核时同时核C和完整T,不裁尾部或以健康槽替代分母。该事实限当前场景,尚不构成完整五轮验收或独立物理精度结论。来源方案与增量。
2026-10-24 · Jank严格双门及Stutter依赖(E2,正式待验)
ios.frame.jank_per_10min使用原生准入间隔d和前三连续间隔a/b/c,严格满足3d>2(a+b+c)且d>83,330,000ns才计一次;83.33ms为既有合同精确常数,不能替换为1000/12ms。R=600×10⁹×C/T,T取各sourceEpoch完整源端点跨度之和,缺失断点清比较历史但保留累计C/T。真实Decoder证实浮点动态等号可误计,现采用jank.strict-rational-ns.v2;规范六位ms恢复ns,非规范legacy保留精确有理值。检查边界需同时满足绝对门与动态门,不能只设计低于83.33ms的动态控制。
在线不接受isJank覆盖,缺/错分类版本的checkpoint要求offline-required,不把旧累计结果回标。Stutter的额外等待累计依赖该分类,摘要带dependencyJankClassificationVersion,既有额外等待公式保持;本批不顺带验收Stutter。聚焦Python10项、独立审计12项、Swift48项通过,仅E2;完整回归/效率/新包及新参考、五轮待验,Jank仍0/5、整体47/66。适用当前默认阈值;Swift非默认配置不标该版本,旧JSON可解码nil。方案与实施记录。
2026-10-24 · BigJank严格125ms边界(E2,正式待验)
ios.frame.big_jank_per_10min使用原生ns间隔d、前三连续准入a/b/c,严格3d>2(a+b+c)且d>125000000才计C;125ms等号不计,R=600×10⁹×C/T,T为各sourceEpoch完整源端点跨度,不能缩为负载时长/健康槽/准入和。真实Decoder已复现动态等号误计,big-jank.strict-rational-ns.v2改用规范六位毫秒→整数ns、其它legacy Double精确有理比较;断点清比较历史、累计C/T保持。在线拒绝isBigJank覆盖,缺/错版本checkpoint要求offline-required,不给旧累计结果回标;Swift非默认阈值不标新版本、旧JSON标签nil。BigJank不参与Stutter累计,已验Jank及其Stutter依赖不变。
复现控制必须经过真实Decoder的来源准入;候选间隔超过保守source-gap门会被合法置空,不能把它误判成分类错误或放宽来源门。先确认完整四个比较间隔均准入,再核严格算术。Python9项/独立12项/Swift49项为E2,正式仍0/5、整体48/66;完整回归/效率/217内部包、新参考与五轮待验。方案及失败控制记录。
4. Stutter %
2026-11-02 起 Stutter 改为“计入的 Jank 帧耗时之和 ÷ 观察时长”(`stutter.jank-frame-time-share.v2`),Jank 增加前 3 帧去重(`jank.perfdog-dedup.v3`);以下额外等待公式为旧版历史记录。[口径修正](/devlog/p6-perfdog-parity-formula-fix-2026-11-02)
Stutter 描述卡顿带来的累计额外等待占比(旧版 v1):
它与 Jank Count 互补:一次非常长的冻结与多次短卡顿可能次数相近,但累计体验损害不同。
2026-10-24 · Stutter完整观察窗及精确额外等待(E2,正式待验)
ios.frame.stutter_percent的额外等待只依赖严格Jank分类:前三连续准入a/b/c齐备,3d>2(a+b+c)且d>83330000ns。独立重算整数E3=ΣJank max(0,3d−a−b−c),Stutter[%]=100×E3/(3T),T为各sourceEpoch完整源端点跨度之和;分母不是准入和、Jank总时长或负载时长,前三均值不先取整。N>0/T>0且E3=0合法0,无准入/T≤0为null。断点清比较历史、累计额外等待与完整T保留,不跨生命/epoch补间隔。产品ms Double值以abs≤1e−6个百分点或rel≤1e−9核对精确有理值,候选质量保持。
真实Decoder、checkpoint全部切点及实际seal八项、独立十二项通过E2,未发现产品缺陷,运行源码和217内部包不变;摘要jankClassificationVersion及stat dependencyJankClassificationVersion绑定依赖,不回标旧结果。完整参考必须映射所有端点和三前驱,严格门边界不确定时拒绝,不以callback或可配子集代替全量真值。当前正式0/5、整体49/66,新参考诊断和五轮尚未执行。方案与软件记录。
5. 1% Low FPS
1% Low 用来描述最差的一小段体验下限。它不是实时主 FPS,也不应该替代 Display FPS。
建议把它理解为:
从逐帧 FrameTime 分布中关注最慢尾部,再转换为等效帧率表达,帮助比较重载场景下的体验下限。
2026-10-24 · 当前专项公式与边界(E2)
metricID=ios.frame.one_percent_low_fps,foreground-device,frames-per-second。ActivityTraceTap原生FrameLifetime经pymobiledevice3传输、自研Decoder输出规范ns间隔,v2准入和v4 candidate报告沿用。N个全Session合法间隔按帧时从大到小取K=(N+99)//100项,L=10⁹K/Σd FPS;空集null,单点为间隔倒数,重复值按频次只取K个。它是慢尾帧时均值的倒数;P99倒数或慢尾FPS算术均值不能互换。原始边界/质量排除不回填,断点保留累计合法分布,不跨边界制造间隔。在线使用精确秩索引最大K项和,离线和独立原生整数核算互相核对;最终数值容差abs≤1e-6或rel≤1e-9。
真实Decoder/在线/离线与checkpoint、N=99/100/101/199/200/201等控制通过14项E2,未复现产品错误,不新打包。独立参考必须完整覆盖全部端点/前驱,参考间隔上下界分别排序取最大K和再求倒数,以允许尾部次序变化。测试App长尾刺激不是独立呈现真值;新独占参考诊断与完整5/5已完成,正式46/66;无完整合规独立参考,E4仅本场景正常性、参考精度未校准。当前方案。
它最适合游戏、复杂动画和长时间滚动等持续更新场景;静态页面不适合拿 1% Low 做发布判断。
6. Smooth 与其他稳定性派生
2026-10-24 · 当前专项精确合同(E1,未验收)
ios.frame.smooth,foreground-device,score(非百分比合格率)。activitytracetap/DTX经pymobiledevice3 ActivityTraceTap与自研FrameLifetimeDecoder提供准入ns间隔d;N≥4时设m2为中位数的两倍,Smooth=100×sqrt(Σ(2d−m2)²/(Nm2²)),越低越稳。常数序列为0,N<4置空;不裁长尾、不用样本方差、不以均值替换中位数、不补缺值。跨断点只保留已准入分布,不制造跨段间隔,版本perfowl-smooth.robust-rms.candidate.v1,v2准入及v4 candidate报告保持。2026-10-25新完整5/5通过E4本场景正常性,整体52/66;保留NO_REFERENCE_ACCEPTED_OWNER_POLICY标记,独立物理精度未校准。方案与执行标准。
ios.frame.smooth 当前属于实验性稳帧分数,用于描述相对中位 FrameTime 的离散程度。它应作为趋势和横向对照,不应取代 P95、Jitter 或原始 FrameTime 分布。
med_range_percent、fps_at_least_*、ftime_ge_100_percent 等现有 Registry 项属于兼容性/专项派生指标,继续保留公式合同,但不与核心体验指标平铺为同等重要性。
7. drop_per_hour 的语义边界
现有 ios.frame.drop_per_hour 属于历史算法派生项。知识层不把它描述成“显示控制器确认丢失的真实物理帧数”。
text
Drop(FPS)/h(2026-11-02 起,报告口径)= count(相邻两秒 FPS 下降 > 8) × 3600 / (末秒 − 首秒)
Drop(FPS)/h(逐帧诊断,旧报告口径)= count(1e9 / previousIntervalNs - 1e9 / currentIntervalNs > 8) × 3600 × 1e9 / fullEpochDurationNs
≠ physical DroppedFrames只在同连续段相邻准入间隔上比较;恰好8FPS不计。完整epoch分母包含同epoch排除源及静默,不改为准入间隔和。无有效间隔或无正观察时长时置空;有准入且零突降为合法0。当前专项新5/5正式验收通过E4正常性,保留无完整独立参考标记,版本及限制见本页带日期记录。
低内容更新率、20/30fps 主动动画策略、动态 Refresh Rate 都可能产生多个 refresh interval 之间没有新 presentation 的情况。metricID 为兼容性可继续保留,但解释必须保持算法语义而非硬件事实语义。
8. 参考基线,而不是绝对发布标准
历史上常见的 60Hz 参考值,例如 Jank 次数、Stutter 百分比或 1% Low FPS,可以用于固定业务场景的回归比较,但不应被写成所有 App、所有刷新率和所有交互类型的统一 Pass/Warn/Fail 标准。
更可靠的做法:
- 固定设备、操作脚本和刷新策略;
- 以历史稳定版本建立基线;
- 同时看 P95/Jitter 与 Jank/Stutter;
- 根据业务目标定义正式门槛。
9. 如何进入根因排查
体验指标只回答“卡得多严重”,不直接回答“为什么卡”。
出现异常时进入 卡顿诊断与渲染归因,把时间窗与 APP CPU、GPU、I/O、热状态和 Screenshot Timeline 对齐。不要仅凭“长帧 + CPU 高”就直接写成已经确诊。
10. 当前指标层级
核心体验指标
text
1% Low FPS
TinyJank
Jank
BigJank
Stutter %稳定性辅助
text
Smooth
Median FPS
Med RangeLegacy / compatibility derived
text
Average FPS
FPS ≥ 18 / 25 Percent
FrameTime ≥ 100ms Percent
Positive FrameTime Delta >100/hour
drop_per_hour这些派生项都应建立在同一条有效 FrameTime 事实序列上,避免 source ownership 在知识页中重复漂移。
当前源码修复 · 2026-10-05(G38,测试包仍b121)
源码新增admissionPolicy=frame-statistics-admission.v2,兼容candidate v3/v4公式标签保留:odd中项、even两中项平均,MedRange按中位±20%闭区间;明确unknown/discontinuity/source-gap/missing间隔不回填,Drop/Delta/三点基线只在连续有效段内比较。全部事件/观测时长与固定验收分母仍保留;有效interval为0时所有14统计missing,有真实interval、零计数才可合法0。已有frame事件但无有效interval不借用FPS gauge填统计。
59匹配和14项×7声明输入×2实现的196独立算术比较E2成立,不证明scope/物理精度或真实五轮连续性。产品源码完整回归1554/3失败、report效率worst wall1.362775x>1.3,整批仍partial,因此未打b122;已装b121仍含旧统计缺陷。旧无新策略的累计状态不复用为已修,不回写旧Session。实施/公式/剩余门。
MedRange闭区间边界知识增量 · 2026-10-24
ios.frame.med_range_percent为foreground-device会话占比,单位percent;N为全部v2准入FrameLifetime间隔,H为瞬时FPS落在本会话FPS中位数M的80%至120%闭区间的计数,P=100H/N。奇数取中项、偶数取两中项FPS算术均值,不是中位帧时的倒数;N=0置空、单点100%、有样本且H=0允许0%。断点阻止跨界间隔,但不清除已准入的累计分布。
E2已复现Double端点舍入漏计:80,019,780/80,019,780/66,683,150ns应全部在区间内,旧在线与离线只计2/3。判断方法是从原生Mach差分及timebase恢复整数ns,用Fraction先求FPS中位数再验证闭区间,覆盖端点±1ns和偶数样本。不能用扩大epsilon掩盖端点,避免将真实区间外帧纳入。
修复版本med-range.closed-rational-ns.v2:帧时中间两项a/b对应精确范围5ab/[3(a+b)]≤d≤5ab/[2(a+b)],在线复用frameTime秩索引,以单调ns键做两次O(log U)前缀计数;离线有理数分类。原生六位毫秒恢复1ns;legacy有限Double仅本项nearest-even量化,量化为0的正数保留精确有理数,极大数不作溢出缩放,不声称其物理精度。Swift以原始UInt64间隔及192位整数乘积比较默认20%区间,非默认配置不标新版本。原始帧时、其它指标、N及质量保持,旧JSON不回标;checkpoint原始索引按新公式重算,不继承旧百分比。
底层仍为activitytracetap/DTX、pymobiledevice3 11.3.1 ActivityTraceTap传输和自研FrameLifetimeDecoder;_FrameAccumulator.summary/analyze_display_frames输出summary与统计消费者分类标签。当前Build214内部包与新完整5/5正式通过,整体45/66;保留无完整独立参考标记,E4仅本场景正常性,参考精度未校准。Metal参考必须覆盖全N和前驱,误差区间跨80%/120%即不能硬分类;callback/sleep不当呈现真值。方案及实施。
11. 版本历史
| 版本 | 日期 | 修订要点 |
|---|---|---|
| 2026-10-24 前台恢复边界 | 2026-10-24 | 系统foregroundRunning与UIKit active不可互换;显式激活连接失败和镜像准入限制各留证。记录。 |
| 2026-10-24 TinyJank失败保全 | 2026-10-24 | a01三轮后r4及恢复诊断均前台准入失败;全证据保留,未计验收。记录。 |
| 2026-10-25 Smooth验收 | 2026-10-25 | 整数RMS、12产品/12独立控制及新完整5/5,正式52/66,保留无完整参考标记。结果。 |
| 2026-10-24 TinyJank验收 | 2026-10-24 | 严格C/T、复用217内部包及新完整5/5,正式51/66;保留无完整参考标记。结果。 |
| 2026-10-24 TinyJank准备 | 2026-10-24 | 共享严格分类、完整T与在线/离线版本标签分别核对;仅E2,Tiny尚未验收。方案。 |
| 2026-10-24 Stutter验收 | 2026-10-24 | 精确E3/T、复用217内部包与完整5/5,正式50/66;保留无完整参考标记。结果。 |
| 2026-10-24 Stutter准备 | 2026-10-24 | 精确E3/完整T、严格Jank依赖及断点/零空边界E2,复用217,正式0/5。方案。 |
| 2026-10-24 BigJank验收 | 2026-10-24 | 严格C/T、新217内部包与完整5/5,正式49/66;保留无完整参考标记。结果。 |
| 2026-10-24 BigJank修复准备 | 2026-10-24 | 严格125ms/动态等号修复与来源准入控制E2,正式0/5。方案。 |
| 2026-10-24 Jank验收 | 2026-10-24 | 严格C/T、新216内部包与完整5/5,正式48/66;保留无完整参考标记。结果。 |
| 2026-10-24 Jank修复准备 | 2026-10-24 | 严格83.33ms双门、原生/legacy兼容、checkpoint及Stutter依赖E2,Jank0/5。方案。 |
| 2026-10-24 SmallJank验收 | 2026-10-24 | 严格C/T、新215内部包与完整5/5,正式47/66;保留无完整参考标记。结果。 |
| 2026-10-24 SmallJank修复准备 | 2026-10-24 | 真实严格等号误计、原生ns修复与checkpoint边界E2,正式仍0/5。方案。 |
| 2026-10-24 1%Low验收 | 2026-10-24 | 慢尾K/S/L与新完整5/5,正式46/66;保留无完整参考标记。结果。 |
| 2026-10-24 1%Low准备 | 2026-10-24 | 明确K/S/L及尾部排序参考误差界,14软件控制通过E2;新参考/五轮待验。方案。 |
| 2026-10-24 MedRange验收 | 2026-10-24 | 精确闭区间分类/214内部包/新完整5/5,正式45/66;完整H/N与健康核同,保留无完整参考标记。结果。 |
| 2026-10-24 MedRange边界准备 | 2026-10-24 | E2复现80%/120%端点漏计,先文档后精确分类;正式0/5,真机与包门仍待完成。方案。 |
| 2026-10-24 Delta严格边界准备 | 2026-10-24 | E2复现恰好100ms误计,新增1ns严格分类/旧checkpoint拒绝;软件回归和效率通过,正式0/5;方案。 |
| 2026-10-24 Drop(FPS)验收 | 2026-10-24 | 严格8FPS调查/新完整5/5,正式44/66;完整C/T与健康核同,保留无完整参考标记。结果。 |
| 2026-10-24 正向DeltaFTime验收 | 2026-10-24 | ns.v2严格边界/在线标签修复,新完整5/5,正式43/66;完整C/T与健康核同,保留无完整参考标记。结果。 |
| 2026-10-24 FTime≥100ms验收 | 2026-10-24 | 新完整5/5、正式42/66;完整H100/N及源健康核同,保留无完整参考政策标记(E4正常性);结果。 |
| 2026-10-23阈值准备 | 2026-10-23 | FTime≥100ms精确边界与160ms独立刺激,软件E2、正式0/5;专项方案。 |
| 2026-10-23验收增量 | 2026-10-23 | FPS≥25精确40ms合同、新完整5/5与源健康v2/完整参考边界;E4正常性通过、物理精度未校准,结果。 |
| 2026-11-02 PerfDog 口径修正 | 2026-11-02 | Jank/BigJank 前 3 帧去重(v3)、Stutter 改为 Jank 帧耗时占比(v2)、报告 FPS 类统一按每秒 FPS(含 Drop 映射);以 PerfDog 导出为回归基准。方案与实现。 |
| v6(当前源码,包待交付) | 2026-10-05 | G38明确帧统计准入v2、标准even中位/未知分段/null与恢复;E2算术成立但完整回归/效率红,b121不含新策略。 |
| v5 | 2026-09-17 | 重构为 Frame Experience 派生层;移除 CoreProfile source 作为页面主叙事,明确 Jank/Stutter 只依赖标准 FrameTime 序列,并修正 drop 与固定阈值的语义边界。 |
| v4 | 2026-09-15 | 记录动态基线、Jank/BigJank/Stutter 与 QA 参考值。 |
| v3 | 2026-09-08 | 建立逐帧与 1% Low 统计。 |
| v1 | 2026-09-04 | 首次发布逐帧体验指标。 |
2026-10-06 版本增量
| 日期 | 变更 | 公式/证据边界 |
|---|---|---|
| 2026-10-06 | G59补回14项报告选择、修正当前来源adapter登记 | 数学公式与candidate不变;E2非物理校准,b123安装/E4五轮待验 |
2026-10-06 · G63 独立呈现事件输入(E2;未校准)
自有Surface日志可逐submission核drawable/可空IOSurface,原G58 7201对核过;只以原presentedTime作间隔,回调mach与requestedFPS不能代呈现或实际刷新率。未呈现必须分段、不补帧。surface-stop没有字节footer,因此已见对完整不证明写盘完整;单Surface/whole-file统计不代全foreground-device、产品固定窗或滚动10s。28控制与219工具回归通过,全54正式仍0/54,原帧容差规范冲突不变。实现与限定。
2026-10-06 · G64 自有参考文件关闭凭据(E2;未部署/未校准)
默认OFF;显式schema2的成功关闭凭据须与实际SHA/计数/字节/限额、fsync/close交叉核对,缺失或失败不能宣称参考写盘完整。schema1原无封口语义保留。19实际writer控制与233工具回归通过;只证该自身日志文件,不证全foreground-device、产品固定窗或物理/API精度,全部54与原五轮/误差门保持。结果。原帧指标公式版本未变。
G64收尾自复核发现最终receipt写后fsync/close失败未完整fail-closed,19已测控制不覆盖此情形;参考升级暂停,修复前不将此工具当正式参考。该风险不改变已装Mac b122或帧公式。开放门。
2026-10-06 · G65 凭据失败关闭(E2;未部署/未校准)
G64最终凭据写后fsync/close失败仍可能成功JSON的问题在冻结源码host复现;现pending完整写/同步/显式关闭后才非覆盖提交最终名,失败pending不入参考。消费者用最终提交basename准入且仍全SHA/计数绑定,名称不证明身份或数据对应。30真实控制/235工具回归/iOS编译E2通过;目录掉电持久性与手机运行未测,不证产品native窗/数值精度/全部foreground scope。原指标公式/54/五轮与误差门保持。结果。
2026-10-23 · 平均FPS精确合同增量
新增会话统计的原生整数纳秒公式、v2准入集合、v3 Registry/v4实际摘要标签区别、null与完整参考边界;当前0/5,E1口径核对不等于指标通过。来源。
2026-10-23 · 平均FPS的完整参考集合与产品响应
平均FPS比较前先证明分子N和分母间隔和S对应同一完整集合。若产品存在Metal记录覆盖外端点、覆盖内未配对端点或额外Metal呈现,局部时间点对齐仍不能校准全Session统计;不能删去这些端点后声称完整精度。测试App的真实presentedTime和双钟已实际核验,回调/请求/GPU日志可诊断,但不补成系统层呈现参考。当前环境预核7,240端点中33未配、3个额外Metal端点,完整参考未合格;具体系统语义未证,不归因硬件或产品数值缺陷。
固定负载可独立检查产品响应:四phase各去两端2秒、前驱和端点均在固定区间内,比较低帧率→正常→长尾→恢复的方向;全Session摘要仍用全部准入间隔,不能把阶段裁切用于最终均值。21项软件反控及真实规模开销检查成立E2,平均FPS正式仍0/5。只有新五轮全部产品门通过后,才按Owner政策正式标记通过且物理精度仍未校准。方案及实际参考检查。
2026-10-23 · 平均FPS正式五轮通过(E4)
平均FPS正式5/5,整体39/66。五轮完整36,202源事件/36,177准入间隔,独立原生整数和与全部报告摘要核同;600/600源健康槽、935行源/CSV一致,四阶段固定响应与所有原件SHA通过。完整Metal参考均未合格,按Owner政策正式标记NO_REFERENCE_ACCEPTED_OWNER_POLICY,referenceAccuracyValidated=false、ownerReviewRequired=false;这是本场景正常性验收,不是完整物理准确度校准。其余13项派生指标不顺带通过。完整结果与范围。
2026-10-23 · FPS≥18占比方案与公式入档
冻结计数分母、原生整数阈值、0/100/null、完整消费者、Metal分类误差界与正常/长尾/恢复固定用例;E1,正式0/5。来源为本指标独立方案,平均FPS已验结论不变。
2026-10-23 · FPS≥18完整参考与阈值不确定性
完整序列一一配对仍只是前提;对于18FPS这类分类统计,还需检查每个独立参考间隔的两端误差是否可能跨55.555…ms界。两端各100µs时差界为±200µs,落在界内者分类不确定,不能四舍五入成确定H/N。当前本指标旧源实际完整集合已经失败(34未配端点、4额外Metal),不可缩分母;其正常/长尾/恢复100%/91.667%/100%只证明固定产品负载响应,不是物理计数精度。15项反控及实际规模/源消费者预核E2通过,正式仍0/5;来源见本指标方案。
2026-10-23 · 冷请求发布与会话准入的恢复边界
请求发布成功不等于采集开始;若20秒准入窗内没有真实Session,不能重新启动监视器后继续消费同一请求。先核新Session是否存在、原件SHA与手机run终态,过期且未消费的唯一pending须保全原字节再单次改名归档;新五轮换前缀、nonce及完整容量基线,不拼接旧轮。当前a01 r3为无Start的执行衔接超时,不能从此归因产品数值或手机硬件故障;新a02保持相同公式与资源门。E3恢复与E4轮次证据分开记,具体见本指标恢复决策。
2026-10-23 · 会话占比的源健康与滚动窗口就绪分开判断
FPS≥18占比以全Session准入间隔计数;滚动P95在断链后清空分布,前4个新间隔为warmup/null,并不意味着本秒没有新帧。实际a02第78发表槽有43个新valid源,断链后P95仅4点,下一槽valid/49;源白名单匹配、投递、消费均7,238,drop/pending/undrained为0。原门把P95全部valid作为本指标1Hz源健康而失败,该历史结果保留;新v2方案先冻结再从新完整五轮执行。
当前源健康按固定120槽的实际发表单调钟前后界,核每槽≥5个新valid原生间隔、末个valid源年龄≤1秒、census与全Raw一致、无跳槽/最大源窗间隔≤2秒。P95质量另列,只有经Raw oracle/Collector/CSV一致确认的warmup/null可作为合法窗口重建;未知、陈旧、掉包或消费者不一致均拒绝。源健康合格不等于完整系统帧精度;断链/未准入源仍保留,完整H/N及candidate口径不变,不补前驱或0。适用于会话级派生占比健康核对,不回改已验P95/Jitter。E2工具诊断、E4新轮资格分开记。方案、失败与修正依据;当前整项仍待五轮。
2026-10-23 · FPS≥18占比正式五轮通过(E4)
正式40/66、剩26项。FPS≥18占比全新a03完整5/5通过,36,152个准入间隔、36,182个完整源事件,600/600源健康槽及900行消费者核同,全部摘要、固定阶段响应、原件SHA和真实39→44容量链通过(E4)。标记NO_REFERENCE_ACCEPTED_OWNER_POLICY,完整独立物理精度未校准;下一FPS≥25占比。网站/Webhook及远程同步欠项单列,公证暂缓,仅内部测试。 600槽为新源健康、P95另外599valid/1warmup且null/质量/原因全核同。五轮完整H/N、30条排除源质量、候选语义与所有原件均保留;不删边界或缩分母。当前无产品代码变更,源健康v2只用于新a03,不回改旧失败。完整结果。
2026-10-23 · FPS≥25精确计数与参考资格
25FPS边界为40,000,000ns,精确计数条件25×d≤1e9,下一纳秒即不合格;先舍入FPS或ms会改变边界。完整Session分母为所有合法原生前驱间隔,不能换成1Hz样本或时长权重。没有准入间隔是null,已有间隔全部低于阈值则0%合法。独立工具覆盖边界、消费者及完整参考反控。实际保全源诊断32端点未配/5额外Metal,完整参考不合格,不能用配对子集替代完整H25/N;限定当前环境按Owner政策准入新五轮,正式仍0/5、物理精度未校准。E2来源与新E4轮次分开记录。本指标方案与用例。
2026-10-23 · FPS≥25占比正式五轮通过(E4)
正式41/66、剩25项。FPS≥25占比新独占完整5/5通过,36,174准入间隔、36,197完整源事件,600/600源健康槽及934行消费者核同;全部摘要、固定阶段响应、原件SHA及真实44→49容量链通过(E4)。标记NO_REFERENCE_ACCEPTED_OWNER_POLICY,完整独立物理精度未校准;下一FTime≥100ms占比。网站/Webhook及远程同步欠项单列,公证暂缓,仅内部测试。 完整源质量与排除记录保留,P95另计{"valid": 598, "warmup": 2},不把其它指标重新计通过。无产品代码/新包。完整结果。
2026-10-23 · 100ms阈值正例与回调刺激的边界(E1/E2)
FTime≥100ms以原生准入间隔d≥100,000,000ns计数;99,999,999ns不计入,恰好100ms计入,N=0为null、已有间隔但H=0为合法0%。80ms回调延迟本身不能保证100ms呈现间隔,不能把睡眠时长写成测得帧时间。新自有测试App使用独立160ms稀疏刺激,实际请求、提交、GPU、呈现及回调各保留;新配方仍须实际资格与完整独立参考检查。软件边界控制和构建通过不等于本指标正式通过,当前0/5、整体41/66。适用于会话阈值占比,后续Delta/BigJank不顺带验收。方案与证据边界。
2026-10-23 · 阈值统计完整覆盖与局部Metal的区别(E4诊断)
本指标新Lab32诊断中,Metal原件schema、双钟、160ms刺激与呈现回调均完整,但系统FrameLifetime集合仍有19个内部未配、18个Fixture覆盖外端点,以及4个额外Metal端点。已验证的是两序列在该完整Session不一一对应;产生差异的系统机制仍未知。判断方法是先核完整Session及每个准入前驱/端点覆盖,再分类100ms,不能从局部匹配或只含负载的子段推断完整占比精度。规避方式是保存全部源/尾部和分母,用完整参考资格单独标记;请求频率、回调和GPU完成不能补造系统上屏事件。适用当前设备/系统/配方,不能外推所有设备永远无参考。新诊断与参考决定。诊断不计正式验收。
2026-10-24 · FTime≥100ms占比正式五轮通过(E4)
正式42/66、剩24项。FTime≥100ms占比新独占完整5/5通过,34,043准入间隔、34,061完整源事件,600/600源健康槽及940行消费者核同;全部摘要、固定阶段响应、原件SHA及真实55→60容量链通过(E4)。标记NO_REFERENCE_ACCEPTED_OWNER_POLICY,完整独立物理精度未校准;下一DeltaFTime>100ms。网站/Webhook及远程同步欠项单列,公证暂缓,仅内部测试。 完整源质量与排除记录保留,P95另计{"valid": 599, "warmup": 1},不把其它指标重新计通过。完整结果。
2026-10-24 · 正向帧时间差严格边界(E2复现,正式0/5)
ios.frame.ftime_positive_delta_gt_100_per_hour单位count-per-hour,scope=foreground-device;相邻连续准入原生间隔d的正差严格>100,000,000ns才计C,恰好100ms不计。观察分母T为各sourceEpoch全部源端点跨度之和(包含同epoch过渡/排除源),R=C×3600×1e9/T;N=0或T≤0为null,有间隔且C=0合法0。断点清比较基线,不改分母。源activitytracetap/DTX、pymobiledevice3传输与自研FrameLifetime decoder沿用本页,消费者positiveFrameTimeDeltaOver100PerHour/Delta(FTime)>100ms[/h]。
已验证坑点:Double毫秒直接相减可将恰好100ms算作100.00000000000001,真实Decoder和在线/离线报告的合成输入已复现一次误计。规避为将已规范六位毫秒恢复整数ns再比较;不能加宽阈值或用epsilon吞掉100ms+1ns。仅本分类新增positive-ftime-delta-threshold.ns.v2,完整v4/v2与Registry兼容标签保留;无原生时的兼容Double只按最近偶数1ns量化,不声称新增物理精度。旧checkpoint缺新标签需重算,不能继承旧C。本项正式0/5,当前整体42/66,不影响已验历史结论;专项方案/复现与修复选择。
2026-10-24 · 在线与离线报告的公式标签需分别核对(E4诊断/E2修复)
本项真实诊断出现frame摘要数值与ns.v2标签均正确、stat值相同却缺分类标签的情况。已确认机制是在线封口和离线报告有各自的stat生成出口;只测试离线构建函数,无法证明实际封口文件传播了新字段。核查应同时读取frame、report-stat与report-final内的stat,逐值/质量/公式及分类标签核同,并先验证封口SHA链。规避为两条出口同批传播本项标签,新增真实OnlineReportSession→seal持久化控制;旧摘要无标签不能重标,失败原报告不得回填。此修复11项控制、完整2891项软件回归与实际6817源临时回放通过E2,原Session SHA不变;新213真机诊断仍待结果,本项正式0/5。适用于有双报告路径的元数据一致性,不代表数值误差或物理精度校准。原因、修复及失败保全。
2026-10-24 · 正向DeltaFTime正式五轮通过(E4)
正式43/66、剩23项。正向DeltaFTime>100ms每小时次数新独占完整5/5通过,34,097完整源/34,087准入间隔、600/600源健康槽及959行消费者核同;严格整数分类、完整C/T、全部摘要与原件SHA及真实59→64容量链通过(E4本场景正常性)。NO_REFERENCE_ACCEPTED_OWNER_POLICY、referenceAccuracyValidated=false、ownerReviewRequired=false;下一Drop(FPS)/h。同步/网站/Webhook欠项单列,公证暂缓,仅内部测试。 完整结果。严格边界/完整分母合同沿用上节;此前0/5及失败记录作为历史保留。
2026-10-24 · Drop(FPS)严格边界与源准入调查(E2,未验收)
Drop(FPS)统计相邻有效间隔的FPS正向突降,1e9/a-1e9/b>8,不是物理丢帧数。独立有理对照可用1e9*(b-a)>8*a*b,恰好8不计。17个整数精确边界及±1ns真实Decoder/在线/离线控制正常;目前未复现Double分类错误,无需据其它指标的历史缺陷推定本指标有Bug。1秒长间隔在默认60Hz测试里被12refresh门置source-gap,不能把不准入间隔的零计数误报为分类缺陷;检查先看quality/refresh/timebase,再看阈值。10Hz合成边界仅E2算术控制,不能证明实际设备10Hz可用。
分母仍是各sourceEpoch完整观察端点跨度和,包含同epoch静默与排除源,独立参考须覆盖全部端点、三个连续前驱及完整分母;有理误差范围跨8时保持不确定。当前正式43/66、Drop0/5;当前专项方案。本增量不改变已有历史数字或验收结论。
| 修订 | 日期 | 变更与来源 |
|---|---|---|
| Drop专项调查 | 2026-10-24 | E2严格8FPS、源准入与完整分母方法;当前未验收,来源见上述专项方案。 |
2026-10-24 · Drop(FPS)正式五轮通过(E4)
正式44/66、剩22项。Drop(FPS)/h新独占完整5/5通过,34,081完整源/34,065准入间隔、600/600源健康槽及922行消费者核同;严格8FPS计数、完整C/T、全部摘要与原件SHA及真实59→64容量链通过(E4本场景正常性)。标记NO_REFERENCE_ACCEPTED_OWNER_POLICY、referenceAccuracyValidated=false、ownerReviewRequired=false;下一MedRange(FPS)。同步/网站/Webhook欠项单列,公证暂缓,仅内部测试。 完整结果。此前0/5与调查失败记录原样保留。
2026-10-24 · MedRange(FPS)正式五轮通过(E4)
正式45/66、剩21项。MedRange(FPS)新独占完整5/5通过,34,081完整源/34,071准入间隔、600/600源健康槽及940行消费者核同;精确闭区间H/N、全部摘要与原件SHA及真实59→64容量链通过(E4本场景正常性)。标记NO_REFERENCE_ACCEPTED_OWNER_POLICY、referenceAccuracyValidated=false、ownerReviewRequired=false;下一1%Low(FPS)。同步/网站/Webhook欠项单列,公证暂缓,仅内部测试。 完整结果。此前0/5与失败记录保留。
2026-10-24 · 1%Low(FPS)正式五轮通过(E4)
正式46/66、剩20项。1%Low(FPS)新独占完整5/5通过,34,079完整源/34,063准入间隔、600/600源健康槽及908行消费者核同;最慢K项和S与倒数L、全部摘要与原件SHA及真实59→64容量链通过(E4本场景正常性)。标记NO_REFERENCE_ACCEPTED_OWNER_POLICY、referenceAccuracyValidated=false、ownerReviewRequired=false;下一小卡顿次数/10分钟。同步/网站/Webhook欠项单列,公证暂缓,仅内部测试。 完整结果。此前准备记录保留。
2026-10-24 · SmallJank正式五轮通过(E4)
正式47/66、剩19项。SmallJank(/10min)新独占完整5/5通过,34,042完整源/34,020准入间隔、600/600源健康槽及875行消费者核同;严格C及完整epoch观察T、所有摘要和原件SHA核同(E4本场景正常性)。标记NO_REFERENCE_ACCEPTED_OWNER_POLICY、referenceAccuracyValidated=false、ownerReviewRequired=false;下一Jank(/10min)。同步/网站/Webhook欠项单列,公证暂缓,仅内部测试。 完整结果。严格分类版本及公式沿用本页,旧准备数字保持。
2026-10-24 · Jank正式五轮通过(E4)
正式48/66、剩18项。Jank(/10min)新独占完整5/5通过,34,075完整源/34,054准入间隔、600/600源健康槽及859行消费者核同;严格C及完整epoch观察T、所有摘要和原件SHA核同(E4本场景正常性)。标记NO_REFERENCE_ACCEPTED_OWNER_POLICY、referenceAccuracyValidated=false、ownerReviewRequired=false;下一BigJank(/10min)。同步/网站/Webhook欠项单列,公证暂缓,仅内部测试。 完整结果。严格分类版本及公式沿用本页,旧准备数字保持。
2026-10-24 · BigJank正式五轮通过(E4)
正式49/66、剩17项。BigJank(/10min)新独占完整5/5通过,34,081完整源/34,070准入间隔、600/600源健康槽及884行消费者核同;严格C及完整epoch观察T、所有摘要和原件SHA核同(E4本场景正常性)。标记NO_REFERENCE_ACCEPTED_OWNER_POLICY、referenceAccuracyValidated=false、ownerReviewRequired=false;下一Stutter(%)。同步/网站/Webhook欠项单列,公证暂缓,仅内部测试。 完整结果。严格分类版本及公式沿用本页,旧准备数字保持。
2026-10-24 · Stutter断点控制补充(E2)
out-of-order也清比较历史而保留已累计额外等待和完整观察窗,补充真实Decoder反控后专项9/9通过;未改产品语义,正式仍0/5。方案增量。
2026-10-24 · Stutter相同刺激下的分母影响(E4单轮,整项待验)
同一受控长尾刺激可产生接近的额外等待分子,但完整Session观察窗不同会改变Stutter百分比。当前诊断T=140283487542ns、E3=51468116252,首正式轮T=176338528500ns、E3=51473464653,两者完整重算分别约12.22955%和9.73005%。判断时应先核各epoch完整端点、额外等待分子与消费者,不能为了数值接近而裁成140秒或仅用准入间隔和。此观察只解释本设备场景的分母效应,不等于完整五轮通过或独立物理精度校准。来源。
2026-10-24 · Stutter正式五轮通过(E4)
正式50/66、剩16项。Stutter(%)新独占完整5/5通过,34,076完整源/34,058准入间隔、600/600源健康槽及904行消费者核同;精确额外等待E3及完整epoch观察T、所有摘要和原件SHA核同(E4本场景正常性)。标记NO_REFERENCE_ACCEPTED_OWNER_POLICY、referenceAccuracyValidated=false、ownerReviewRequired=false;下一TinyJank(/10min)。同步/网站/Webhook欠项单列,公证暂缓,仅内部测试。 完整结果。严格分类版本及公式沿用本页,旧准备数字保持。
2026-10-24 · TinyJank别名与报告版本识别(E2)
当前TinyJank与SmallJank共用严格分类计数:三个连续准入前驱齐备后,3d>2Σprev3且24d>10^9,d以ns计。1000/24ms不能先舍入到41.67ms;动态门等号不计。Tiny的metricID与coverage仍独立,不能用SmallJank历史五轮替代Tiny专项验收。率使用完整epoch源端点跨度T,600×10^9×C/T,不能裁成刺激时长。
报告消费者需识别标签所在层:当前在线summary/stat以frame-report.candidate.v4标整条报告算法,在线stat的classificationVersion=small-jank.strict-rational-ns.v2标严格分类;离线summary另有tinyJankFormulaVersion=tiny-jank.perfdog-public.v1,离线stat的formulaVersion使用该专用公式标签,分类版本相同。只比较formulaVersion文本可能把两条数值相同的路径误判;应同时核来源路径、分类版本、准入策略、C/T与实际消费者数值。专项真实Decoder/online seal/offline stat软件10项和独立12项验证了此合同,不回标旧结果,不推论独立物理精度。当前Tiny仍0/5,来源专项方案。
2026-10-24 · 负载未启动时的合法0不能代表验收通过(E3)
TinyJank正式a01的r4出现Mac Session已保存且计数0,但Fixture没有新run。手机gate记录画布/Metal就绪、thermal=0,5秒准入内active持续false后admission-expired;完整Raw只有51源/47准入。独立原件重算0与消费者相符,只证明这个短来源的算术一致,未满足完整负载及≥1000准入门,不能把合法0或Session完成当作正式通过。
判断时应同时绑定新nonce、对应Fixture run目录、完整负载终态/时长、来源健康与消费者。缺run要先停队列保全claimed/intent/gate和Mac原件,再定位系统前台资格;不能补轮拼接,也不能凭active=false推断锁屏或硬件损坏。本例直接阻塞已验证,系统原因尚待证。来源专项方案。
2026-10-24 · TinyJank前台资格恢复仍未通过(E3)
正式50/66、剩16项不变。TinyJank旧独占a01正式前三轮通过,r4因测试台active=false准入过期未启动负载,首失败停、r5未开始;单次非终止激活后的新a03诊断重复同一前台资格失败,新正式a02尚未创建。旧3/5不拼接。全部失败/请求/gate/Session保留,1100件125545111B及新host镜像SHA核同,实际58/64;需手机恢复测试台前台后新资格诊断及完整新五轮。无产品数值缺陷证据,未认定锁屏或硬件故障。 完整记录。单次CoreDevice激活响应成功不等于UIApplication.active,必须以新完整负载原件资格为准。
2026-10-24 · 系统前台字段与UIKit active不能互换(E3)
当前设备系统进程表foregroundRunning连续为true,但这只是服务报告的前台运行状态,不能直接替代自有测试台UIApplication.applicationState == .active的负载准入。遇到已在前台仍未启动负载,应查同一次请求的gate和run终态,保留系统观测与UIKit观测各自的时间;本次未取得新的UIKit观测,不宣称两者在同一瞬间矛盾。
启动方法也需区分:本机pymobiledevice3 AppService调用未显式传activate;Apple工具提供--activate,但本次在设备连接阶段失败。系统iPhone镜像另外提示当前手机需更新iOS,尚不能提供可操作界面。连接失败、镜像不兼容与已启动却未active是不同阶段,均不能直接归因锁屏、硬件或指标算法。先检查每条通道的实际结果,避免仅凭启动返回成功、永不锁屏设置或进程表标志重复启动整批测试。适用范围为本机当前版本与实测设备,不外推至所有平台。来源:恢复增量记录。
2026-10-24 · TinyJank正式五轮通过(E4)
正式51/66、剩15项。TinyJank(/10min)新独占完整5/5通过,34,068完整源/34,052准入间隔、600/600源健康槽及874行消费者核同;严格C及完整epoch观察T、所有摘要和原件SHA核同(E4本场景正常性)。标记NO_REFERENCE_ACCEPTED_OWNER_POLICY、referenceAccuracyValidated=false、ownerReviewRequired=false;下一Smooth。同步/网站/Webhook欠项单列,公证暂缓,仅内部测试。 完整结果。本页严格公式及两路径标签合同保持,历史数字不回改。
版本历史增量:2026-10-24 Smooth准备,先记录精确整数RMS、中位秩、null/0及独立参考保守区间合同(E1),未计正式验收;来源为本项方案。
Smooth版本合同增量(2026-10-24,E2):真实seal在线stat的formulaVersion=frame-report.candidate.v4,离线stat和离线summary的专用公式版本=perfowl-smooth.robust-rms.candidate.v1,Registry沿用后者;在线summary不补离线专用字段。标签层级不同,需分路径验证并核对数值,不能仅因标签不同认定数值Bug。首次标签等同测试失败原件保留,来源为本项方案的版本调查增量;未因此增加正式验收数量。
2026-10-25 · Smooth正式五轮通过(E4)
正式52/66、剩14项。Smooth新独占完整5/5通过,34,077完整源/34,054准入间隔、600/600源健康槽及908行消费者核同;整数ns中位秩与RMS、全部摘要及原件SHA一致(E4本场景正常性)。标记NO_REFERENCE_ACCEPTED_OWNER_POLICY、referenceAccuracyValidated=false、ownerReviewRequired=false;下一进程总能耗成本。同步/网站/Webhook欠项单列,公证暂缓,仅内部测试。 完整结果。整数中位秩/RMS及两路径版本合同保持,历史测试与结论不回改。
2026-10-26 · 完整集合与统计分母的实验经验
独立Metal参考必须能映射整个系统呈现集合、端点及前驱;局部动画吻合或工作负载确实完成,不解除额外/缺失端点和积分窗歧义。各派生项分别做资格,不能沿用上一项无参考结论。120个源健康槽验证持续观察,不是120个独立会话摘要。
阈值用准入原生整数ns/有理数比较,严格大于保持严格;全场AvgFPS用准入间隔N和总间隔,事件率则用其合同规定的完整epoch跨度T。缺口不被删除以缩短T,首点/重置重建局部基线,Smooth可能大于100。只从1Hz展示值不能重建会话P95、Jank或Smooth。平均FPS实验 · Drop边界 · Smooth完整五轮。
版本历史增量:2026-10-26,汇总完整参考集合、整数阈值与N/T分母方法;不改变各项公式或无参考正式通过标记,引用E4正常性不宣称独立物理校准。月度复盘与来源索引 · 实验判断方法
版本历史增量:2026-10-28,第二轮内部试用口径、来源及报告边界更新;E2/E3与待测E4分列。第二轮方案与实现。
版本历史增量:2026-10-28,普通报告及四页Excel补全封存帧衍生值;产品1Hz FPS分布和原生帧统计分列,逐秒缺项不借全程反填。437项软件与旧会话独立核对E2,不新增指标验收。实现与限制。