当前位置:首页 > 文章列表 > 文章 > 软件教程 > Chrome DevTools Performance 录制后如何定位长任务

Chrome DevTools Performance 录制后如何定位长任务

来源:17golang原创 2026-09-14 18:36:05 0浏览 收藏

页面点击、输入或滚动后出现明显卡顿时,Performance 录制里的长任务通常是最值得先看的线索。打开 Chrome DevTools 的 Performance 面板,复现一次卡顿,在 Main 轨道找到带红色三角的任务,再用 Summary、Call tree 和 Bottom-up 逐层收窄范围。不要只看一条最长色块:先确认任务发生在主线程,再判断时间花在自己的脚本、样式/布局,还是第三方脚本上。

官方地址:https://developer.chrome.com/docs/devtools/performance/

要点速览
  • 长任务先在 Main 轨道定位,红色三角和红色区段是快速入口。
  • Summary 看单次任务,Call tree 看谁从根部造成了工作,Bottom-up 看聚合后的直接耗时。
  • 结论至少记录函数或活动、脚本来源、Self Time、Total Time 和可复现动作。

1. 先把录制范围缩到一次可复现的卡顿

打开 DevTools,选择 Performance。如果标签页没有显示,可以按 Command+Shift+P(Windows、Linux、ChromeOS 使用 Control+Shift+P),输入 Performance panel,选择 Show Performance panel

Performance > Capture settings 中只调整确实需要的 CPU 或 Network 模拟,然后点击 Start recording。立即执行一次能稳定复现卡顿的点击、输入或滚动,完成后点击 Stop recording。录制越短,后面在时间线上找长任务越容易;不要把多次无关操作混在一份 trace 里。

Chrome DevTools Performance 面板的录制入口、Capture settings 与 Start recording 状态示意
图1:Performance 面板的录制入口和 Capture settings 操作示意图;界面为原创示意,不是实际截图。

2. 在 Main 轨道先找带红色标记的任务

录制停止后,先在 Timeline overview 里拖选卡顿发生的时间段,再观察 Main 轨道。主线程活动以火焰图展示:横向是时间,纵向是调用栈,位于上方的活动会造成下方的子活动。

长任务会在右上角出现红色三角,并把超过 50ms 的部分用红色标出。点击这个任务,在下方 Summary 查看 DurationSelf duration、脚本来源、调用栈和时间分解。这里的 Duration 只能说明一次任务有多长,不等于已经找到了最应该修改的函数,所以要继续向调用关系展开。

一个实用的记录格式是:复现动作 / 任务总时长 / Self duration / 来源脚本 / 最深的业务函数。如果 Summary 只显示浏览器内部活动,先沿着调用栈向下展开,或打开 source map 后重新录制。

Chrome DevTools Performance Main 轨道中带红色三角的长任务及 Summary、Call tree、Bottom-up 结果示意
图2:Main 轨道选中长任务后核对 Summary 和表格分析入口的结果示意图;图中数据为解释操作的虚构示例。

3. 用 Call tree 和 Bottom-up 判断时间到底花在哪里

选中同一段时间后,先看 Call tree。它从根活动出发,展示谁触发了后续工作;按 Total Time 排序,适合回答“哪次点击、事件或顶层任务造成了最多工作”。按 Self Time 排序,则能看到某个节点自身直接消耗的时间。

再切换到 Bottom-up。它把同一个活动在多个调用路径中的耗时聚合,适合回答“哪个函数或活动反复出现,累计直接占用了最多时间”。例如一个函数单次不长,但被多个事件调用,Bottom-up 可能比火焰图更快暴露它。

视图适合回答先看哪一列
Main长任务发生在什么时间、调用栈如何展开Duration 与红色区段
Call tree哪个根活动造成了最多工作Total Time
Bottom-up哪些直接活动聚合耗时最高Self Time
Event log活动按什么先后发生Start Time

4. 排除第三方干扰并形成可复核结论

如果页面加载了分析脚本、广告脚本或组件库,点击 Performance 顶部操作栏的 Dim 3rd parties,第三方事件会变灰,第一方代码更容易被看见。没有选中事件时,还可以在 Summary 的 1st / 3rd party 表里比较各方的传输大小和主线程时间。

最后不要把“有一个 300ms 长任务”直接写成结论。应保存录制文件,并记录复现动作、选中的时间范围、Summary 的来源、Call tree 的根活动、Bottom-up 的最高 Self Time,以及第三方是否被置灰。这样下一次改代码后可以用同一动作再次录制,比较时间是否真的下降。

常见问题

红色三角是不是一定代表 JavaScript 写错了?

不是。长任务发生在主线程,可能来自脚本执行、样式计算、布局或绘制。先看 Summary 的活动类型和调用栈,再决定优化方向。

Call tree 和 Bottom-up 为什么数值不一样?

Call tree 保留从根活动向下的调用关系,Bottom-up 按活动聚合多条路径。两者统计视角不同,应在同一时间选择范围内配合使用。

录制后看不到自己的函数名怎么办?

先确认 JavaScript samples 没有关闭,再检查生产构建是否带有可用 source map。也可以先用脚本 URL、活动名称和 Event log 的发生顺序定位范围。

定位完成的标准不是找出最长的一块颜色,而是能把一次卡顿连接到具体事件、函数或外部脚本,并用同样的复现动作验证改动结果。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Go url.URL.JoinPath 处理双斜杠时结果为什么改变Go url.URL.JoinPath 处理双斜杠时结果为什么改变
上一篇
Go url.URL.JoinPath 处理双斜杠时结果为什么改变
Go errors.Join 组合错误后如何让 errors.Is 继续匹配
下一篇
Go errors.Join 组合错误后如何让 errors.Is 继续匹配
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    24次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    128次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    55次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    22次使用
  • OpenCompass大模型评测体系详解:功能、使用指南与应用场景
    OpenCompass
    OpenCompass是上海AI实验室推出的开源大模型评测平台,提供CompassKit、CompassHub和CompassRank三大核心组件,支持LLM及多模态模型的一站式标准化评估与排行榜查询。
    77次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码