Skip to content

Profiler 性能剖析

基于 React 19.2 + React DevTools 6.x 编写

速查

  • 录制:Profiler 面板点录制 → 交互 → 停止;或「Reload and start profiling」测首屏
  • 火焰图(Flamegraph):层级 + 各组件本次 commit 渲染耗时
  • 排名图(Ranked):按渲染耗时排序,找最慢组件
  • Commits:顶部每个竖条 = 一次提交,点选看该次渲染
  • 为什么渲染:设置开「Record why each component rendered」
  • Compiler:React 编译器记忆化的组件标 ✨
  • 灰色组件 = 本次未渲染

录制性能

Profiler 面板:

  • 录制交互:点圆形录制按钮 → 在页面操作 → 再点停止
  • 测首屏渲染:点「Reload and start profiling」重载并从头录制

录制结束后得到一组 commit(提交),每次状态更新触发的渲染对应一个 commit。

火焰图(Flamegraph)

展示该次 commit 的组件层级与渲染耗时

  • 条越宽 = 渲染(含子树)耗时越长
  • 颜色:黄 / 橙表示耗时较多,灰色表示本次未重新渲染
  • 点击组件看其本次渲染耗时与原因

排名图(Ranked)

把本次 commit 的组件按自身渲染耗时降序排列,一眼看出最慢的组件,适合快速定位性能热点。

Commits 时间线

顶部一排竖条代表录制期间的每次 commit(高度 / 颜色反映耗时)。点选某个 commit 查看那一次的火焰图——可逐次分析「哪一次更新最贵」。

为什么重渲染

在 Profiler 设置里勾选 「Record why each component rendered while profiling」,录制后点组件即可看到它为什么渲染

  • Props changed(哪些 props 变了)
  • State / Hooks changed
  • Context changed
  • Parent re-rendered(父组件重渲染带动)

这是消除「不必要重渲染」的关键——先知道为什么渲染,才能对症下药。

React Compiler 与 ✨

React 19 起的 React Compiler 会自动记忆化组件。在 Profiler 里,被编译器记忆化的组件会标上 ,帮助确认编译器是否如预期生效、哪些组件已被自动优化。

下一步

实时高亮重渲染与优化技巧见 高亮重渲染与优化