SuperAPI AI 工具集

simplify-trace

数据与分析

查看项目

更新于 10-16 02:32

技能介绍

用途:Chrome DevTools 性能 trace 常有数十到数百 MB JSON,无法直接阅读。本技能把单份 trace 转成几 KB 的 Markdown 报告,突出耗时过长或执行过于频繁的工作。

主要能力:输出默认章节 summary、longtasks、events、frequent、functions、categories,可选 timeline(按秒的主线程忙时,用于定位活动)、network(含 TTFB/时长/大小的资源瀑布)、websocket(WebSocket 生命周期)。报告含头部(事件数、墙钟跨度、采样 JS CPU 时间、空闲百分比)、超阈值的长任务及其偏移、最热事件类型(自身时间)、最频繁事件类型、最热 JS 函数(来自内嵌 V8 CPU 配置文件的 bottom-up 自身时间,含 file:line)、按类别的自身时间。

使用方式:对 trace 文件运行脚本,Markdown 打印到 stdout 或用 --out FILE 写出。 node skills/simplify-trace/scripts/simplify-trace.mjs <trace.json> [--top N] [--long-task-ms MS] [--window START-END] [--out report.md] --top N(默认 25);--long-task-ms MS(默认 50);--window START-END 把整个报告限定到时间片(相对 trace 起点的毫秒偏移);--only a,b、--except a,b、--all 选择要输出的章节;--match TEXT 对行做不区分大小写过滤(事件名、函数名、URL);--list 打印可用章节键后退出;--out FILE 写文件。约 500 MB 以上 trace 可前缀 node --max-old-space-size=8192。大 trace 建议用 --out 输出到临时文件再读,不要直接读原始 trace。可用 --list 查看完整章节集。

适用场景:单动作录制(切换文件、打开菜单)多为空闲初始化时间,建议先不带窗口运行一次,找到活动区间(长任务偏移或按秒统计忙时),再用 --window START-END 重跑,使所有表格只描述该动作。trace 的 metadata.startTime(ISO/UTC)把偏移 0 锚定到墙钟,可据此与服务器日志(zero-cache、sync-worker)按时间戳对齐。

限制:脚本只做汇总,不修改 trace。空闲且网络静默的间隙只能看出何时、无法看出原因,需在客户端路径加 performance.mark()/console.timeStamp()。录制工件 CpuProfiler::StartProfiling(约 50–60ms,即使嵌套在 RunTask 中也算)不计入长任务表;若长任务显示 None,说明该动作确无单一阻塞任务,应转而看聚合自身时间、GC 与动画循环事件。压缩名(r、Tg)会带 file:line 以定位源码。