用途:分析 .cpuprofile(V8 采样分析器)与 DevTools 跟踪文件(Trace-*.json,Chrome Trace Event Format),定位性能瓶颈、比较代码路径、理解耗时分布。
主要能力:识别文件类型;解析 .cpuprofile 的 nodes、samples、timeDeltas、startTime/endTime;构建节点与父节点映射、绝对时间戳、栈回溯;按时间分桶识别活动区域;测量里程碑间耗时;按 self time 排序比较代码路径。对 trace 文件可分析 blink.user_timing 标记、长任务(RunTask)、FunctionCall、布局与渲染事件、内嵌 CPU profile(ProfileChunk)、GC 压力、输入延迟,并区分 Browser、Renderer、GPU 进程。
使用方式:先用 statSync 检查文件大小;小于约 400MB 可用 JSON.parse(readFileSync(..., 'utf8')),超过则用 Buffer 扫描提取各段。分析脚本建议以 node --max-old-space-size=16384 script.mjs 运行。
适用场景:调查某代码路径为何更慢、找出最耗时的函数、比较前后实现、排查布局抖动与长任务、分析 VS Code 用户计时标记与多进程行为。
限制:采样分析器只记录采样时刻栈上的函数,不保证出现所有函数名,应关注模式而非精确名称;(idle)、(program)、(garbage collector) 表示无用户代码运行;超大文件需 Buffer 解析,否则可能超出 V8 字符串上限。