用途:分析 .cpuprofile(V8 采样分析器)与 DevTools 追踪文件(Trace-.json,Chrome Trace Event Format),用于定位性能瓶颈、比较代码路径、理解耗时分布。适用于用户提供性能文件并希望了解性能、排查某路径更慢的原因、找出最耗时的函数、比较新旧实现、调查布局抖动/长任务/渲染瓶颈、分析 VS Code user timing 标记、理解多进程行为等场景。\n\n主要能力:先判断文件类型(.cpuprofile 顶层含 nodes、samples、timeDeltas;Trace-.json 顶层含 traceEvents)。对 .cpuprofile 可构建节点表、父子映射、由 timeDeltas 推算绝对时间戳、栈回溯、按时间桶划分活动区域、测量里程碑间耗时、比较两条代码路径的函数自耗时并排序。对 trace 文件可识别进程与线程(Renderer/CrBrowserMain 等,重点为 Renderer 的 CrRendererMain),分析 blink.user_timing 里程碑、超过 50ms 的 RunTask 长任务、FunctionCall 源码位置、UpdateLayoutTree 等布局渲染事件、GC 压力(MinorGC/MajorGC、cppgc)、输入延迟(EventDispatch)以及重建内嵌 CPU profile(Profile/ProfileChunk)。\n\n使用方式:先用 statSync 检查文件大小;小于约 400MB 时可用 JSON.parse(readFileSync(..., 'utf8')),更大文件需用 Buffer 按已知 JSON 键扫描分段提取,且运行脚本时使用 node --max-old-space-size=16384 script.mjs。小文件可格式化为可读 JSON 便于查看。输出通常包括时间线、各区域时长、自耗时最高函数、对比表与关键栈。\n\n限制:采样分析器只记录被采样时在栈上的函数,不保证出现精确函数名,应结合相关标记函数看整体流程。文件可能超过 V8 字符串上限(约 512MB),大文件必须走 Buffer 解析路径。
cpu-profile-analysis
通用与其它
更新于 10-16 00:32