外观
报告与衍生统计补全
Owner四项反馈直接进入本批开发;同一AI顺序方案、实现、软件测试与分离复核,无子代理。基线41923d4d;正式55/66、11项暂停,保留现存会话与失败证据,不操作手机,不恢复历史验收。只覆盖标准App,公证暂缓、安全机制不变。
诊断与决策(先于代码)
- 概览直接遍历全部启动事件,导致阶段默认铺开。保留启动总耗时,阶段放入默认关闭的DisclosureGroup;启动页同样可展开,不删除事件。
- 右侧按visibleSeries单列,既长又依赖当前分类。改为有界宽度双列卡片,按左栏启动、CPU与调度、内存、画面表现、GPU、网络与磁盘、能耗分组;单次启动值明确标注,不冒充游标时刻采样。滚动惰性布局,已有游标/缺值/截图逻辑不变。
- sealed report含完整statReport与frameSummary,Repository已读入scalarResults,但普通UI隐藏全部scalar,Excel也仅填9个统计槽。这是展示/映射遗漏,不是全部采集缺失。普通报告概览/画面表现增加帧统计卡,无内部质量/可靠性标签;用“已记录帧区间”说明统计分母。缺失源仍留空,未知逐秒Jank不能拿全程/10分钟率填入。
- Excel新增默认打开的“概览”工作表,纵向指标/结果/单位/统计范围/最低/峰值,分组、冻结、适配打印,解决29/44列超宽首屏。保留all的29统计列、44逐秒列及原行位,保留@FrameInfo,不改变兼容明细列序;all只冻结前两列与12行,清晰组色与列宽,避免五个文本列挤满视口。新增概览是本次明确样式偏差,不承诺竞品导入兼容。
固定口径与映射
沿用session-report-summary.v2的产品有效点等权平均;CPU整机容量100%,内存Excel十进制MB、网络十进制KB/s(普通界面仍MiB/KiB/s)。合法0保留,missing/非法/非有限值不作0,暂停源不启用。
- Avg(FPS)、≥18/25比例、Std/Var(FPS)、Median(FPS)、MedRange(FPS)均以选区内产品1Hz FPS有效点为同一总体:均值Σx/n,方差Σ(x-mean)^2/n,标准差sqrt(var),排序中位数(偶数取中间两值均值),MedRange=100×count(0.8median≤x≤1.2median)/n。方差用Welford防消减误差;只在导出时排序,不在游标路径计算。版本product-fps-distribution.v1。不填Drop(FPS):既有frameSummary的droppedFramesPerHour是逐帧算法,不能冒充产品逐秒FPS下降次数;留空待统一具体定义。
- Smooth、1%Low、Tiny/Small/Jank/Big每10分钟、Stutter、FTime≥100、正ΔFTime>100每小时、Avg/Std/Var(FTime):全程导出直接复用已封存scalar,准入沿用Repository accepts,版本与底层公式不改。Registry映射分别为ios.frame.smooth / one_percent_low_fps / tiny_jank_per_10min / small_jank_per_10min / jank_per_10min / big_jank_per_10min / stutter_percent / ftime_ge_100_percent / ftime_positive_delta_gt_100_per_hour / time;Std/Var为现存报表分布统计,非新增Registry指标。
- UI另展示帧区间平均FPS、阈值比例及中位帧率等既有帧标量,与产品1Hz平均FPS明确分开;帧统计窗口取frameSummary.durationMs/1000,非Session墙钟,未映射Session端点,不用于选区。选区时帧标量不借用全程;提示可切回全程查看,不伪造区间重算。
- 网络同一时刻send/recv均有效的点配对;均值/1000为KB/s;×600得到KB/10min(平均速率归一化,不是实际累计传输字节);单向使用同一配对总体。CPU/内存均值沿用已有索引。逐秒Smooth/Jank等缺乏已绑定逐帧时间窗输入时保持空白;暂停能耗/温度、未知XcodeMemory及磁盘字节与速率不混填。
- @FrameInfo保持真实输入边界,本轮不从1Hz FPS构造逐帧,不把设备Mach时间硬对齐host时间;无已闭合对应时保留空表。概览说明“空白表示本次未记录;逐秒卡顿与帧记录不由全程统计反填”,不是可靠性标签。
效率与验证预算
不新增采集、进程或Raw全量扫描;复用一次加载的sealed scalars及Series索引,导出O(NM)+O(F log F)(FPS有效点F排序),额外O(F)空间;截图与流式ZIP原64KiB缓冲不变。单窗口卡片与双列详情使用Lazy布局,游标不排序/重算统计。60s/1h/4h同fixture前后对照导出wall/CPU/RSS/I/O,目标≤1.2倍原耗时/峰RSS;新纵向概览固定O(M),不复制逐秒数据。UI首次渲染与游标响应另核;既有4h长报告门不借此关闭。
验证:默认阶段折叠、分类双列顺序、无内部词、合法零/缺值/选区不偷用全程、20个统计槽/单位/配对网络/数值稳定、ZIP与Excel XML结构。只读最新与旧会话独立复算及SHA保全,真实Excel样式检查。软件E2、安装E3,手机复测由Owner。产品开发结束打包232、严格签名/独立验包/空闲同址覆盖;双远程/通知/站点分列记录,未关门保持partial。
Owner补充 · 2026-10-28 · 专业版成品及导出共用
Owner提供自动化平台与PD两份Excel作为参考,明确选择“最新Perfowl单次报告,同时改进应用导出”。参考前者任务/指标清晰组织和后者统计/采样/帧表层级,不复制私有身份字段或竞品品牌;成品使用Owner最新封存会话,原始输入只读。
增加独立“趋势”页,三张原生Excel图(FPS、应用CPU、物理占用内存),全部引用all已导出的真实数据行,横轴沿用time毫秒;缺值以gap显示,不插值、不将缺失当0。没有数据不生成空图。原生图可随明细单元格更新;仅缓存绘图数值,不增加第二套统计。工作表顺序为概览、趋势、all、@FrameInfo。有界流式输出图表数据O(N),本轮导出超时仍600秒,曲线不代替1Hz或逐帧定义。成品输出与应用导出使用同一Writer,不另造手工美化版本。
逐帧表补充决策(先于实现)
最新会话已有封存frame-events-live.jsonl,决定导出其真实记录,不再保留空壳。Repository仅在report-seal.files的SHA核同后读取,沿用16MiB安全界限,最多100,000条;超限或哈希/字段异常时整表不采用,不悄悄截断。frame记录提供设备timestampNs、已有frameTimeMs、epoch,不重算间隔或跨epoch补帧。@FrameInfo的time=(timestampNs-首个已记录timestampNs)/1e6毫秒,FTime为原ms,label标明帧片段/epoch;该时间轴相对首个帧记录,明确区别于all的Session host起点,不能跨页直接配对。选区缺少桥接时不借全程记录。全部记录纳入报告digest,原Session保持只读。导出仍为三列time/FTime/label,缺少/首帧warmup的FTime留空,负/非有限不改0;准入沿用既有帧质量列表,不改变统计计算或以逐秒FPS造帧。
Implementation / Validation Update · 2026-10-28
实际修改:SessionReportView与ReportWindowModel默认折叠启动阶段、360px双列分类检查器;ReportDerivedStatistics按固定映射呈现封存帧统计、统一计算导出分布与配对网络;PerfDogLayoutWorkbookWriter新增纵向概览与专业样式,保留all列位;ReportWorkbookCharts流式写三张原生图,引用all真实数值及缺口;Repository在seal SHA匹配后读取有界逐帧记录,不改变原有digest协议或旧标注绑定。普通阶段、线程/调度/磁盘文案补为中文,无内部可靠性标签。
偏差均先文档化:Owner追加专业Excel成品,扩展为四页而非原两页;真实逐帧表采用独立首帧设备时间起点,不谎称与host轴闭合;未知逐秒衍生仍留空。概览与all共用一次统计计算,不重复排序。测试首次有两处旧冻结位置/空帧表断言失败,按已批准的新布局更新;首次临时基准复制旧Writer引入同名类型冲突,改为独立命名,不修改产品来让测试通过。失败材料保留。
软件与分离核对(E2)
- 全量Swift437项、11skip、0失败(81.081s),skip均为显式基准/指定外部fixture,不删除失败用例;本批最新会话只读导出与原生渲染opt-in已实际执行。另有匹配前后基准1项、0失败(96.407s),临时基准源码留私有证据,不混入产品/提交。
- Python独立解析Excel并从原会话重算28个统计槽:FPS均值/分布、CPU、物理占用、配对网络及sealed帧统计全同;66行原有CPU/内存/FPS/网络/GPU/截图引用等列与Owner上次导出逐格相同,未改测量值。Drop(FPS)仅缺口按既定定义保留,不用另一种丢帧率冒充。
- 545条真实逐帧记录逐条数值/相对设备时间核同,首点warmup为空,不跨epoch补值。3张图的缓存逐点等于all单元格,缺值不入缓存、gap保留;65张JPEG均完成ZIP CRC和图像解码核对;277个用户会话文件SHA保持不变。
- 通过openpyxl独立结构读取及Artifact Tool工作表/范围渲染检查,概览、衍生段、三图趋势、all及帧表无截断/坏图。原生报告渲染显示默认阶段关闭、分组双列和帧统计卡。该主机检查不等于Office实开或手机E4,当前主机无Excel/Numbers/LibreOffice可供实开,兼容门继续开放。
同配置前后资源对照(E2)
同进程、同现存零截图fixture,以HEAD旧Writer重命名隔离作为前版;60s/1h/4h各交替顺序重复三次,耗时/CPU取中位、RSS取实采峰值。包含完整xlsx写入;不是新手机采集、物理I/O或屏幕响应基准。
| 点数 | 导出wall前→后(s) | CPU前→后(s) | 峰RSS前→后(MiB) |
|---|---|---|---|
| 60 | 0.0421→0.0683 | 0.0360→0.0421 | 16.99→17.01 |
| 3600 | 1.5621→1.9317 | 1.4328→1.6837 | 92.17→92.19 |
| 14400 | 5.1424→5.8117 | 4.8406→5.4666 | 322.98→322.95 |
新增原生图/概览带来额外成本:60点1.62倍、1小时1.24倍,超过方案1.2倍耗时目标,尽管绝对值分别68ms/1.93s,资源门仍partial,不描述为完整交付;4小时1.13倍达相对目标,RSS均未显著增加。进程峰写速率前→后约5.6→9.7、284.6→739.5、376.1→384.5 MB/s,来自短时采样/文件缓存,不代表物理磁盘吞吐;I/O/CPU/RSS完整收据保留,缓存未受控。既有长报告加载/游标/RSS缺口不由本导出基准关闭;未做本批完整最坏16MiB帧文件/UI响应资源矩阵。
当前437项软件与成品核对完成,232正在构建;内部安装、公证暂缓、网站、双推/通知最终状态继续追加。正式55/66、11项暂停;Owner负责手机试用,无新采集或新精度结论。
Internal Installation Update · 2026-10-28
Build232已替换231,同址安装于标准路径,未安装并行版本。App/DMG均为Developer ID签名,严格验签、独立只读挂载、安装树核同、x86_64原生依赖及冻结Collector源码核同完成;旧客户端在会话非活动时正常退出,231必要回滚ZIP独立还原核同。已注销并删除本批核同的私有App副本,保留一个当前DMG和SHA文件,用户会话及参考输入未删改。此为E3本机安装证据,不是手机采集验收。
内部包为MacApp/dist/Perfowl-232-macos-x86_64-internal.dmg,148,265,069 bytes,SHA-256 ce9521146aa11b519e99456cd0365a5e0f662166c194e6eb9ee970dcf915ff02。公证按Owner要求暂缓,Gatekeeper执行评估退出码3,公证门未关闭;系统安全设置不变,不称正式分发包。
最新单次成品由同一产品Writer生成,复制到Owner下载目录后逐件SHA核同;四页Excel、3张原生图、545帧和65张JPEG截图包与此前独立收据一致。已安装源文件SHA和构建记录一致,未在构建后更改产品源码。后续由Owner做手机试用;软件/保存数据核同不等于采集准确性结论。
交付状态与下一阶段
整体仍为partial:导出短场景/1小时相对耗时目标、既有长报告资源门、最坏帧输入/UI资源矩阵、Office实开及公证/GPL法务未关闭。正式55/66,11项暂停。下一阶段先收集Owner新会话与实际Excel打开反馈,再按具体缺口处理,不恢复历史指标队列;本批网站构建/生产发布、双远程与通知以最终收据分列。
Feedback Revision Plan · 2026-10-28 · Excel八项反馈
类型仍为本Canonical devlog的计划增量;基线c2ca552c。Owner要求同步改进成品及应用导出,同一AI顺序实现/软件验证/分离核对,无子代理。正式55/66、11项暂停、公证暂缓、安全设置及用户会话不变。
- 普通报告/CSV/Excel不展示两项host生命周期观测延迟(observed-running/foreground-ready);它们不是设备端启动阶段。保留原始记录、Registry与开发者视图,采集和公式不改。
- 概览改五列“指标、结果、单位、最低、峰值”,移除统计范围列和每个采样指标名后的“平均”,在采样分类标题统一标“平均”;混有分布/帧统计的画面类以分组行区分,不把中位数/方差说成均值。细分统计窗口和单位说明移到“指标解释”页。
- 单次启动总耗时置顶加粗,九个既定阶段按生命周期顺序缩进,采用Excel outline形成层级。设备端Total是首尾端点跨度,不是阶段和;不根据阶段和改写Total,也不新增推测差额。
- 新增“指标解释”sheet,覆盖概览实际指标、all全部29统计字段/44采样字段、逐帧字段、单位/平均方式/空白/时钟与窗口。说明遵循当前实现和Canonical,不暴露内部candidate/可靠性标签,不用未知字段猜解释。
- 本地导出Device Name使用session-plan保存的真实deviceName,Device Type/Product Type使用已有型号字段;无名称时留空,不再硬编码匿名名、不现场读取手机、不推断名称。真实名称只进入Owner本地报告,不写公开文档/测试fixture/提交。
- Stat/Data_v4是区段标签而非指标,改为“统计汇总/采样明细”,@FrameInfo标题为“逐帧记录”;保留all行位、29/44列序和帧表三列,不承诺外部导入器兼容。
- 所有数据单元格(包括缺值)使用浅色完整框线;标签左对齐、数值右对齐、单位/表头居中;分类全行填充、统一列宽/小数位、阶段缩进与汇总加粗。
关键路径仍为一次sealed加载与O(NM)流式导出,解释页按本报告指标集合构建O(M),不读Raw、不扫描历史、不新增采集;有界16MiB帧输入与600秒超时不变。前后同fixture60/3600/14400点各三次交替,检查wall/CPU/峰RSS/I/O、真实最新成品导出/渲染及原文件SHA,目标本次相对232≤1.2倍,旧资源门不借此关闭;本批不做手机或旧指标验收。匹配测试后构建233,严格验签/独立验包/正常退出/同址覆盖,导出新成品;网站/双远程/通知各自记录实际结果。
Owner范围收敛 · 2026-10-28 · 优先于上节多页布局
Owner继续要求仅保留“概览/详细数据”两个sheet;删除趋势图、逐帧页及独立指标解释页。概览顶部必须有应用/设备/测试时间信息,仅展示重要统计;详细数据纵向展示全部普通用户指标的结果、单位、最低/峰值及简短解释。原逐秒/逐帧原件留会话,不在本次紧凑Excel中横向铺44列;保留诊断CSV原有能力,不删原始记录。此为Owner明确改变的导出合同,不再要求29/44列及all/@FrameInfo名称兼容;原PerfDog结构常量仅作既有口径参考,Stat/Data_v4不进入成品。
基本信息采用会话保存的应用名/标识、设备名/型号/系统、开始/结束时间、测试时长和采样间隔,不查询手机、不写UDID/序列号。概览单页打印;详细数据一页宽、按内容纵向分页,保留可读字号,不承诺全部指标和解释在一张A4纸上硬缩排。启动总项/阶段层级、统一平均标题、框线/对齐、真实名称读取与host观测延迟移除继续执行。新布局不扫描N行采样写逐秒表、不绘图,O(N)工作仅沿用FPS分布计算;输出O(M)指标行,重点基准目标为比232导出更快且RSS不增加。
Compact Implementation / Validation Update · 2026-10-28
实际修改:ReportWorkbookPresentation统一普通用户指标行、两页布局、解释与样式;Writer保留历史类型/API名但改为紧凑合同,移除图表实现文件;UserReportPresentation统一排除host生命周期观测延迟,CSV/普通UI同步,开发者路径和原件保留。概览顶部会话信息+重要统计,详细数据按分析分类呈现全部本次有记录的采样指标、封存帧统计及分布结果;不将纯Registry/标量镜像占位再次作为空采样行展示。启动总项加粗,九阶段按既定顺序缩进并有outline,条件/缺失阶段留空;不求和改写Total。真实名称只进入Owner本地报告;公开记录仍用别名。
本批已按Owner连续补充收敛为两页,故与232的29/44列、all/@FrameInfo/趋势布局明确不同;解释合并在详细数据中,不保留第三页。概览28行、详细数据80行(当前真实样本),概览设置一页打印,详细数据一页宽、纵向分页。应用/设备文本左齐,数值右齐,单位/表头居中,数据格含空白格均完整浅色框线,日期/核心数/秒数均为typed值。未在紧凑报告中铺逐秒/逐帧原件,但这些原件未删改,仍保留诊断导出能力与截图ZIP配套。
验证与分离核对(E2)
- Swift438项、12skip、0失败,77.113s;skip为显式资源/外部fixture/只读报告opt-in,真实会话opt-in另外执行1项0失败。初次八项方案实施后旧冻结列位/帧表标题断言失败,Owner再将范围改为两页后旧44列断言继续失败;按文档化新合同更新断言,并新增会话元数据/名称缺失不假填、两页、层级、观测分离、框线/对齐测试。原失败日志完整留存,不删测试或改测量值来消除失败。
- 独立openpyxl读取并与已源数据复算的232成品比较:59个原有数值指标(排除两项明确移除的host观测)及其原有极值全同;本次详细数据64个有数值指标,另保留缺失启动阶段的空白。两个sheet名称/无图表部件、打印配置、真实保存元数据、typed日期/核心数/秒数、九行阶段outline、框线/对齐均核同。
- 同一Writer输出最新真实会话成品,Artifact Tool只读导入/重算、两页上中下范围渲染检查,无坏表/截断/重复空指标段;未独立实开Office,打印配置不冒充Office实际纸张效果。65张JPEG与232截图包逐件SHA一致,277个用户原文件SHA未变;新成品替换下载目录中尚未被用户修改的原生成文件,替换后SHA核同。
同配置前后资源对照(E2)
固定fixture60/3600/14400点、同进程交替三次,中位wall/CPU与实采峰RSS;前版为c2ca552c的232四页Writer,后版为最终两页Writer,截图均为零。此比较反映Owner主动减少导出内容后的成本下降,不声称相同逐秒输出吞吐提升,也不代表采集开销或手机精度改进。
| 点数 | wall前→后(s) | CPU前→后(s) | 峰RSS前→后(MiB) | 进程写入字节前→后 |
|---|---|---|---|---|
| 60 | 0.0312→0.0112 | 0.0272→0.0106 | 17.14→17.15 | 139,264→49,152 |
| 3600 | 0.9479→0.0330 | 0.8963→0.0318 | 92.14→92.16 | 5,804,032→49,152 |
| 14400 | 4.1167→0.1158 | 3.7960→0.1069 | 322.62→322.55 | 23,482,368→49,152 |
本次导出耗时目标达到,峰RSS无显著增加,进程读字节中位均0(文件缓存未受控),I/O峰值与采样间隔收据保留。首响应沿用异步导出准备状态,未另外测UI最差响应;既有长报告加载/游标/多窗与最坏16MiB帧输入资源门不由此关闭。本批构建233中,安装最终结果待追加;正式55/66、11项暂停,Owner手机试用尚未执行。
Compact Internal Installation Update · 2026-10-28
Build233已严格签名并同址覆盖232;App/DMG Developer ID签名、独立只读挂载、12,912文件/330个x86_64原生组件、冻结Collector源码与安装树核同完成,无非系统外部原生依赖。客户端在会话非活动时正常退出,232必要回滚ZIP独立还原核同;未启动手机采集。已注销/删除本批核同私有App副本,标准安装仅/Applications/Perfowl.app,dist仅当前233 DMG和SHA;用户原会话和参考输入保留,安装后再核277原文件SHA未变。
内部包MacApp/dist/Perfowl-233-macos-x86_64-internal.dmg,145,060,685 bytes,SHA-256 e28c2b074e32d8ff8b2c2af8c905a80eca711f6800248e560ae3edcfd356e257。已安装65个Swift源文件SHA与构建快照一致。公证按约暂缓,Gatekeeper执行评估退出3/Unnotarized Developer ID,系统安全不变,不作为正式分发通过。两页成品已原址更新并核SHA,截图包不变;Office实开/实际纸张效果、既有长报告与最坏UI/帧输入资源门仍开放,本批不作手机精度判断。
整体partial,正式55/66、11项暂停;下一由Owner使用233及新两页成品试用反馈,不恢复旧验收。站点构建/生产guard、双远程和通知按本批最终收据逐项报告,不将部署或软件核对视为手机E4。