6.1 KiB
MOD-03 核心热路径测量与选择性优化
本任务完成计划中的核心测量与优化工作。生产改动在检查点
23a4f22b7256392ddb4cc6b2eef5bed6e93879d2,本次补齐持久化、当前构造采样、布局
读写和实际安装包的正式配对验收。没有把性能工作定义成所有计时必须单向变快,
也没有把体积审查信号或未来候选复盘自动关闭。
按原任务范围核对
| 范围 | 实际工作与证据 |
|---|---|
| 进度更新 | 共享slider只写变化的ARIA值,保留实时读取及外部DOM恢复;main/legacy各三引擎三组旧新配对,100次重复刷新从500次写入降为0;见slider-updates-validation.json |
| DOM读写 | 当前安装包验证原生ResizeObserver构造同步控件高度读取0次、fallback1次;40项设置首次导航1次查询/41次样式读取,无关按键0/0,动态隐藏/禁用/恢复的焦点继续正确;12项原生检查通过 |
| 持久化 | 原生Storage/JSON操作与独立计时、旧新三组/三引擎共9项检查;验证正常读取返回独立对象、写回保留中途加入的其他设置、暂停后不保存;保留既有实现 |
| 初始化与销毁 | 当前源码10次热身/60次实际首帧、构造与销毁的Chromium采样;再用实际安装包完成三引擎各三组BASE-06正式旧新配对,54次候选资源探针通过 |
| 兼容和类型 | 新隔离包36项运行时入口检查、5组旧类型模式、8组精确类型模式均通过;原2859项单元及main/legacy交互回归见前检查点,播放器源码此后未改 |
| 体积与无效/拒绝方案 | 保存原始计时、变慢组、初版测试错误、原349ms失败;不靠缓存可变存储对象、删第二次读取、延迟清理或改阈值获得更好数字 |
持久化的实际成本与取舍
每个旧新变体先实际播放,预热100次合成timeupdate,然后记录五组各100次刷新, 计时期间不替换Storage/JSON方法。另一个100事件窗口才包装原生方法计数:两边均 为200次getItem、200次JSON.parse、100次JSON.stringify和100次setItem。
每100事件的三组中位数:Chromium旧约1.4–1.6ms、新1.5–1.8ms;Firefox旧2ms、 新1–2ms;WebKit旧1–2ms、新3ms。保留原始样本及计时精度限制;这是整个合成 timeupdate链路,不是单独Storage耗时,不从中推算真实视频每秒的开销或宣称改进。
直接复用解析对象会改变正常get的对象隔离;直接重用第一次envelope可能覆盖自定义 get在两次读取之间写入的其他设置。原生旧版/候选均验证了这两条行为,因此本轮 没有为减少读写而改变存储格式、写入频率、保留规则或同步API。被拒绝方案来自 代码审查与契约验证,不声称已经实现并测量过这些不兼容替代方案。
初版用保存值与稍后的currentTime精确相等作断言,导致WebKit三项失败,两次读取 相差约15–27微秒;其中有旧版也有候选。最终改成核对保存值位于同一次刷新前后 原生读取的区间内,不引入任意容差。首轮记录保留,不能将测试错误登记成产品缺陷。
初始化、布局与正式配对
复用profile-core-layout.mjs取得当前源码真实CPU采样。构造采样约90207微秒, 其中insertAdjacentHTML约15793、模板init约14994;销毁采样约51139微秒,原生 video.load约32147、模板destroy约9743。采样总量不是所有构造的精确壁钟耗时, 原生时间也可能计到JS调用方;这是定位证据,不替代独立正式配对。当前数据没有 支持在这一轮增加模板缓存或把原生媒体释放延后;保留DOM/SSR/代理和同步清理行为。
布局/设置测试使用当前实际安装包,复核CORE-22已有优化仍生效。原生observer不在 构造中强制读取控件高度,fallback仍立即测量;尺寸、字幕位置与首次观察前销毁均 有断言。长设置列表的工作量保留原始附件,并核对所有引擎一致,未跨事件缓存可用项。
正式配对沿用BASE-06媒体、热身、五次样本、core/chapter两种配置和三组交替顺序。 新包run-rawoRh首轮Firefox因实测观察349ms失败,已由独立ENG-13修复当前适配层, 冻结数据和350ms门槛未改。同一安装包重测完成三引擎、108个旧新资源窗口,其中 54个候选窗口通过严格清理;详见observation-window-validation.json。
第二轮没有计时超阈值信号,但首轮Chromium销毁信号保留;只改观察窗口不构成 计时优化,不以重跑成功证明波动消失。体积始终review-required:现代208943 raw / 58756 gzip9 / 53660 Brotli6;比即时修改前增加12/10/12字节。原完整增量归因仍在 build-analysis.md,不把新增可访问性、设置树和失败恢复能力的成本说成TS工具运行时。
验收边界和后续维护
补充18项storage/auto-playback单元和新增浏览器测试的定向lint通过。包内架构文档 更新后重新执行yarn test:package:run-jl3UQr的36项运行时、5组旧类型、8组精确类型 均通过。与实际浏览器/计时使用的run-rawoRh逐文件比较,只有核心ARCHITECTURE.md 发生变化,所有其他打包文件一致;这里复用相同运行时字节的证据,不声称浏览器 曾运行新归档。完整包报告与差异哈希保存在收尾记录。
MOD-03的选择性优化、全部指定测量、旧新对比和权衡已形成可复跑证据。 ENG-PERF-01/02继续由REVIEW-01及最终候选复盘审查:体积增长是真实成本,间歇计时 信号不能简单宣布为噪声。未来源码/构建/依赖改变后,重新打包和执行相应验证。 这不是全项目、全插件、GPU/原生内存、物理设备或远端CI验收,也不是npm发布授权。
详细报告、样本、输入指纹和复跑命令见 收尾记录。这次只新增测量/契约测试 及维护文档;生产优化保留在同任务前述检查点。回退该检查点并正常构建核心/i18n 可恢复冗余ARIA写入;回退当前提交只移除收尾测试/文档及任务完成记录。