返回知识库

调试与质量 · 运行证据

性能分析Performance Profiling

性能分析会录下一次真实操作,把耗时拆成时间线和函数热点,再用同一场景验证优化是否有效。

录下这次搜索卡顿,看看时间花在哪

这是浏览器里的性能分析工具:左边是发生卡顿的商品搜索,右边会把同一次操作拆成时间线和函数耗时。

第 0 步 · 打开工具先打开 Chrome 开发者工具 → Performance → Record
NOVA MARKET找到你的夏日衣橱
12,000 件商品
夏季衬衫输入后卡住 318ms
!

输入后页面短暂失去响应先录下这次卡顿,再决定改哪里

Performance
等待录制
准备录制这次搜索操作发生后,时间线会把 318ms 拆开。
录制结果
等待一次可重复的操作录制后会在这里选中最耗时的函数。

先复现,再判断先录下同一批商品、同一次搜索,才能知道 318ms 花在了哪里。

Profiling 会拆开一次真实操作的耗时,帮你找到时间究竟花在哪一段;火焰图只是其中一张结果视图。

知识点:从症状走到真实热点

刚才不是凭感觉改列表,而是用同一动作留下可以比较的运行证据。

  • 先固定数据、浏览器和操作;否则两次结果不能直接比较。
  • 时间线先指出哪一段形成长任务,火焰图再指出 CPU 时间主要花在哪个函数。
  • 优化最宽的热点后,用完全相同的搜索复测,确认 318ms 是否真的下降。

什么时候用、怎么用

单页搜索、点击或动画出现卡顿时,用 Profiling 拆开这一次操作;跨服务请求变慢则优先看链路追踪。

  • 入口:打开 Chrome DevTools 的 Performance,点击 Record 后重演问题。
  • 最短路径:固定场景 → 录制 → 选中长任务 → 找最大热点 → 做最小改动 → 同条件复测。
  • 不要只盯 CPU:网络、布局和渲染也可能让页面变慢,要先看时间线的证据。

正反例:同一搜索,只改变优化顺序

目标都是让搜索恢复流畅,差别在于先看运行证据,还是先凭感觉改代码。

正例录到 filterItems 62%,再做缓存

同条件复测从 318ms 降到 74ms,证明改动命中了真实热点。

反例觉得是渲染慢,先重写 renderRows

filterItems 仍占最大宽度,搜索卡顿没有解决,只是把时间花在了错误位置。

快速自测

商品搜索偶尔卡住,但你还没有可比较的 profile。第一步该做什么?

继续查证

术语的技术定义和行为以这些一手或权威资料为准。

下一步学

和本知识点经常一起出现的概念。