性能功能参考

Sofia Emelianova
Sofia Emelianova

本页是与分析性能相关的 Chrome 开发者工具功能的全面参考。

有关如何使用 Chrome 开发者工具分析网页性能的指导教程,请参阅分析运行时性能

记录性能

您可以记录运行时或加载性能。

记录运行时性能

如果要分析页面运行时(而不是加载时)的性能,请记录运行时性能。

  1. 转到您要分析的网页。
  2. 点击 DevTools 中的性能标签页。
  3. 点击 Record 图标 录制。

    录制。

  4. 与网页互动。DevTools 会记录因您的互动而发生的所有网页活动。

  5. 再次点击录制,或点击停止以停止录制。

记录加载性能

如果您想分析网页在加载(而非运行)时的性能,请记录加载性能。

  1. 前往您要分析的网页。
  2. 打开 DevTools 的性能面板。
  3. 点击 Start profiling and load page 图标 开始分析并重新加载页面。。开发者工具首先会前往 about:blank,以清除所有剩余的屏幕截图和轨迹。然后,开发者工具会在页面重新加载时记录性能指标,并在加载完成后几秒钟自动停止记录。

    重新加载页面。

DevTools 会自动放大记录发生大部分活动的部分。

网页加载记录。

在此示例中,Performance 面板显示网页加载期间的活动。

在录制时截取屏幕截图

选中屏幕截图复选框可在录制时截取每一帧的屏幕截图。

“屏幕截图”复选框。

请参阅查看屏幕截图,了解如何与屏幕截图互动。

在录制期间强制进行垃圾回收

在录制页面时,点击收集垃圾图标 以强制执行垃圾回收。

回收垃圾。

显示录制设置

点击 Capture settings 图标 拍摄设置。 可显示更多与开发者工具如何捕获性能记录相关的设置。

“拍摄设置”部分。

停用 JavaScript 示例

默认情况下,录制的 Main 轨道会显示录制期间调用的 JavaScript 函数的详细调用堆栈。如需停用这些调用堆栈,请执行以下操作:

  1. 打开拍摄设置 设置。 菜单。请参阅显示录制设置
  2. 选中停用 JavaScript 示例复选框。
  3. 录制该页面。

以下屏幕截图显示了停用和启用 JavaScript 示例之间的区别。停用抽样后,录制的轨道会变短很多,因为它会省略所有 JavaScript 调用堆栈。

停用 JS 代码段时的录制内容示例。

此示例显示了已停用 JS 示例的录制内容。

启用 JS 示例时的记录示例。

此示例显示了启用了 JS 示例的录制内容。

在录制时节流网络

如需在录制时限制网络流量,请执行以下操作:

  1. 打开拍摄设置 设置。 菜单。请参阅显示录制设置
  2. 网络设置为所选的节流级别。

在录制时限制 CPU

如需在录制时限制 CPU 占用率,请执行以下操作:

  1. 打开拍摄设置 设置。 菜单。请参阅显示录制设置
  2. CPU 设置为所选的限制级别。

节流是相对于计算机的性能而言的。例如,2 倍减速选项会使 CPU 的运行速度比平时慢 2 倍。DevTools 无法真正模拟移动设备的 CPU,因为移动设备的架构与桌面设备和笔记本电脑的架构大不相同。

启用 CSS 选择器统计信息

如需在长时间运行的 Recalculate Style 事件期间查看 CSS 规则选择器的统计信息,请执行以下操作:

  1. 打开拍摄设置 设置。 菜单。请参阅显示录制设置
  2. 勾选 Enable CSS selector stats(启用 CSS 选择器统计信息)复选框。

如需了解详情,请参阅如何分析“重新计算样式”事件期间的 CSS 选择器性能

启用高级绘制插桩

如需查看详细的绘制插桩,请执行以下操作:

  1. 打开拍摄设置 设置。 菜单。请参阅显示录制设置
  2. 勾选启用高级绘制插桩复选框。

如需了解如何与绘制信息互动,请参阅查看图层查看绘制性能分析器

模拟硬件并发

如需测试具有不同处理器核心数量的应用性能,您可以配置 navigator.hardwareConcurrency 属性报告的值。某些应用使用此属性来控制其应用的并行度,例如控制 Emscripten pthread 池大小。

如需模拟硬件并发,请执行以下操作:

  1. 打开拍摄设置 设置。 菜单。请参阅显示录制设置
  2. 勾选硬件并发,然后在输入框中设置核心数量。 硬件并发。

DevTools 会在 Performance 标签页旁边显示一个警告图标 警告。,以提醒您已启用硬件并发模拟。

如需还原为 10 的默认值,请点击还原 还原。 按钮。

保存记录

如需保存录音,请右键点击并选择 Save Profile(保存配置文件)。

保存个人资料。

加载录音

如需加载录制内容,请右键点击并选择加载配置文件

加载配置文件。

清除之前的录音

录制后,按清除录制内容图标 清除录制内容。,即可从效果面板中清除相应录制内容。

清除录制内容。

分析表演录制内容

记录运行时性能记录加载性能后,性能面板会提供大量数据,用于分析刚刚发生的情况。

若要仔细检查性能记录,您可以选择记录的一部分,滚动长火焰图,放大和缩小,以及使用面包屑导航在缩放级别之间进行跳转。

选择录音的一部分

Performance 面板的操作栏下方以及记录的顶部,您可以看到 Timeline 概览部分包含 CPUNET 图表。

操作栏下方的“时间轴”概览。

如需选择录音的某个部分,请点击并按住,然后在时间轴概览中向左或向右拖动。

若要使用键盘选择部分内容,请执行以下操作:

  1. 将焦点移到轨道或其任何邻近区域。
  2. 使用 WASD 键可分别执行放大操作、向左移动、缩小和向右移动的操作。

若要使用触控板选择部分,请执行以下操作:

  1. 将光标悬停在时间轴概览部分或任何轨道(主轨道及其相邻轨道)上。
  2. 使用两根手指,向上滑动可缩小,向左滑动可向左移动,向下滑动可放大,向右滑动可向右移动。

借助时间轴概览,您可以连续创建多个嵌套面包屑导航,逐渐增加缩放级别,然后在缩放级别之间自由跳转。

如需创建和使用面包屑导航,请执行以下操作:

  1. 时间轴概览中,选择录制的某个部分
  2. 将鼠标悬停在所选内容上,然后点击 N ms 按钮。所选范围将展开,以填满时间轴概览。面包屑导航链会在时间轴概览顶部开始构建。
  3. 重复前面的两个步骤,再创建一个嵌套面包屑导航。只要选择范围大于 5 毫秒,您就可以继续嵌套面包屑导航。
  4. 如需跳转到所选的缩放级别,请点击时间轴概览顶部链中相应的面包屑导航。

如需移除面包屑导航的子级,请右键点击父级面包屑导航,然后选择移除子级面包屑导航

滚动长火焰图

如需滚动轨道或其任何邻近轨道中的长火焰图表,请点击并按住,然后向任意方向拖动,直到您要查找的内容显示在视野中。

您可以在主要轨道中的活动和网络轨道中的请求中进行搜索。

如需打开效果面板底部的搜索框,请按以下键:

  • macOS:Command+F
  • Windows、Linux:Ctrl+F

搜索框。

下例在底部的搜索框中显示了一个正则表达式,用于查找所有以 E 开头的 activity。

如需轮流查看与您的查询匹配的活动,请执行以下操作:

  • 点击 Previous Next 按钮。
  • Shift+Enter 可选择上一个,按 Enter 可选择下一个。

效果面板会针对搜索框中选择的活动显示提示。

如需修改查询设置,请执行以下操作:

  • 点击 区分大小写,使查询区分大小写。
  • 点击“正则表达式”“正则表达式”即可在查询中使用正则表达式。

如要隐藏搜索框,请点击取消

更改轨道的顺序并将其隐藏

如需简化性能轨迹,您可以在轨迹配置模式下更改轨迹的顺序并隐藏不相关的轨迹。

要移动和隐藏轨道,请执行以下操作:

  1. 如需进入配置模式,请右键点击轨道名称,然后选择配置轨道
  2. 点击向上箭头 或向下箭头 可向上或向下移动轨道。点击 将其隐藏。
  3. 完成后,点击底部的完成轨道配置,退出配置模式。

观看视频,了解此工作流程的实际应用情况。

Performance 面板为新跟踪记录保存跟踪配置,但在以后的开发者工具会话中不会保存配置。

查看主线程活动

使用轨道可查看在网页的主线程中发生的活动。

主轨道。

点击某个事件可在摘要标签页中查看与其相关的更多信息。效果面板会以蓝色勾勒出所选事件。

如需详细了解主线程事件,请参阅“摘要”标签页。

此示例显示了有关摘要标签页中 get 函数调用事件的更多信息。

阅读火焰图

性能面板会以火焰图的形式显示主线程活动。x 轴表示一段时间内的录制内容。y 轴表示调用堆栈。上面的事件会导致以下事件。

火焰图。

此示例显示了 Main 轨道中的火焰图。click 事件导致了匿名函数调用。该函数又调用了 onEndpointClick_,后者又调用了 handleClick_,以此类推。

性能面板会为脚本分配随机颜色,以打破火焰图的连续性,使其更易于阅读。在前面的示例中,来自一个脚本的函数调用显示为浅蓝色。来自其他脚本的呼叫会显示为浅粉色。深黄色代表脚本活动,紫色事件代表渲染活动。这些较深的黄色和紫色事件在所有录制内容中都是一致的。

较长的任务也会用红色三角形突出显示,超过 50 毫秒的部分用红色阴影表示:

耗时较长的任务。

在此示例中,任务耗时超过 400 毫秒,因此代表最后 350 毫秒的部分用红色填充,而前 50 毫秒则未填充。

此外,Main 轨道会显示使用 profile()profileEnd() 控制台函数启动和停止的 CPU 配置文件的相关信息。

如需隐藏 JavaScript 调用的详细火焰图,请参阅停用 JavaScript 示例。停用 JS 示例后,您只会看到高级事件,例如 Event (click)Function Call

跟踪事件发起者

Main 轨道可以显示将以下发起者及其引发的事件连接的箭头:

  • 样式或布局失效 -> 重新计算样式布局
  • 请求动画帧 -> 动画帧已触发
  • 请求空闲回调 -> 触发空闲回调
  • 安装定时器 -> 定时器已触发
  • 创建 WebSocket -> Send...接收 WebSocket 握手销毁 WebSocket

如需查看箭头,请在火焰图中找到发起者或它引发的事件,并将其选中。

从请求到触发空闲回调的箭头。

选择此选项后,“Summary”(摘要)标签页会显示发起者的发起者链接,以及对于它们所导致的事件的发起者链接。点击这些事件可在相应事件之间切换。

“摘要”标签页中的“发起者”链接。

在火焰图中隐藏函数及其子项

如需整理 Main 线程中的火焰图,您可以隐藏所选函数或其子函数:

  1. Main 轨道中,右键点击某个函数,然后选择以下选项之一或按相应的快捷键:

    • 隐藏函数 (H)
    • 隐藏子项 (C)
    • 隐藏重复的子项 (R)
    • 重置子项 (U)
    • 重置轨迹 (T)
    • 向忽略列表添加脚本 (I)

    包含用于隐藏所选函数或其子级的选项的上下文菜单。

    具有隐藏子级的函数名称旁边会显示 下拉按钮。

  2. 如需查看隐藏子项的数量,请将鼠标悬停在 下拉按钮上。

    下拉按钮上方的提示,其中显示了隐藏的子项数量。

  3. 如需重置包含隐藏子级或整个火焰图的函数,请选择该函数并按 U,或者右键点击任意函数,然后分别选择 Reset trace

忽略火焰图中的脚本

要向忽略列表添加脚本,请右键点击图表中的脚本,然后选择向忽略列表添加脚本

焦点位于“忽略脚本”选项的上下文菜单。

图表会收起被忽略的脚本,将它们标记为在忽略列表中,然后将它们添加到 设置 > 忽略列表中的自定义排除规则中。系统会保存已忽略的脚本,直到您将其从跟踪记录或自定义排除规则中移除为止。

“设置”中的“忽略脚本列表”标签页。

在表格中查看活动

记录网页后,您无需仅依赖 Main 轨道来分析活动。 开发者工具还提供三种表格视图,用于分析活动。每个视图都会从不同的角度显示活动:

为帮助您更快地找到所需内容,这三个标签页的 Filter 栏旁边都提供了高级过滤按钮:

  • 匹配大小写
  • 正则表达式
  • 全字匹配

用于高级过滤的三个按钮。

Performance 面板中的每个表格视图都会显示函数调用等 activity 的链接。为了帮助您进行调试,开发者工具会在源文件中查找相应的函数声明。此外,如果存在并启用了相应的源映射,则开发者工具会自动查找原始文件。

点击链接,在来源面板中打开源文件。

指向“事件日志”标签页中的源文件的链接。

根 activity

下面介绍了调用树标签页、自底向上标签页和事件日志部分中提及的根 activity 概念。

根 activity 是指会导致浏览器执行某些工作的 activity。例如,当您点击某个网页时,浏览器会触发 Event activity 作为根 activity。然后,该 Event 可能会导致执行处理程序。

轨道的火焰图中,根 activity 位于图表的顶部。在 Call TreeEvent Log 标签页中,根 activity 是顶层项。

如需查看根 activity 的示例,请参阅“调用树”标签页

“调用树”标签页

使用调用树标签页查看哪些根 activity 会造成最多的工作量。

通话树标签页仅显示录音的所选部分中的活动。请参阅选择记录的一部分,了解如何选择部分。

“调用树”标签页。

在此示例中,activity 列中的顶级项(例如 EventPaintComposite Layers)是根 activity。嵌套表示调用堆栈。在此示例中,Event 导致了 Function CallFunction Call 导致了 button.addEventListenerbutton.addEventListener 导致了 b,以此类推。

自用时间表示直接花在该活动上的时间。总时间表示在该 activity 或其任何子项中所花的时间。

点击自用时间总时间活动,按对应的列对表格进行排序。

使用过滤框按活动名称过滤事件。

默认情况下,分组菜单设置为无分组。您可以使用分组菜单根据各种条件对活动表进行排序。

点击 Show Heaviest Stack 图标 显示“执行用时最长的堆栈”边栏。,以显示 Activity 表右侧的另一个表。点击一项活动以填充最重堆栈表。执行用时最长的堆栈表格会显示所选 activity 的哪些子项的执行时间最长。

“自下而上”标签页

使用自下而上标签页可查看直接占用的汇总时间最多的活动。

Bottom-Up 标签页仅显示所选部分的活动。如需了解如何选择片段,请参阅选择录音的部分内容

“Bottom-Up”标签页。

在此示例的轨道火焰图中,您可以看到,几乎所有时间都花在了执行对 wait() 的三次调用上。因此,自下而上标签页中的顶部活动是 wait。在火焰图中,对 wait 调用下方的黄色实际上是数千个 Minor GC 调用。因此,您可以在 Bottom-Up 标签页中,费用最高的 activity 是 Minor GC

自用时间列表示该活动在其所有发生实例中直接花费的汇总时间。

总时间列表示在该 activity 或其任何子项中所花费的总时间。

“事件日志”标签页

使用事件日志标签页,可按活动在记录期间的发生顺序查看活动。

事件日志标签页仅显示录制内容的所选部分中的活动。请参阅选择记录的一部分,了解如何选择部分。

“事件日志”标签页。

Start Time 列表示相对于记录开始时间,相应活动开始的时间点。在此示例中,所选项的 1573.0 ms 开始时间表示活动在记录开始 1573 毫秒后开始。

自用时间列表示您直接花在该活动上的时间。

总时间列表示直接在该活动或其任何子级活动中所花的时间。

点击开始时间自用时间总时间,以按该列对表格进行排序。

使用过滤框按名称过滤活动。

使用时长菜单可过滤掉不到 1 毫秒或 15 毫秒的所有活动。默认情况下,时长菜单设置为全部,这意味着显示所有活动。

停用加载脚本渲染绘制复选框,即可滤除这些类别中的所有活动。

查看显示时间

时间轨道上,查看重要标记,例如:

时间轨道中的标记。

选择一个标记,即可在摘要标签页中查看更多详细信息,包括其时间戳、总时间、自定义时间和 detail 对象。对于 performance.mark()performance.measure() 调用,此标签页还会显示堆栈轨迹。

查看互动次数

互动轨道上查看用户互动,以跟踪潜在的响应速度问题。

如需查看互动情况,请执行以下操作:

  1. 例如,在此演示页面打开 DevTools
  2. 打开性能面板,然后开始记录
  3. 点击某个元素(咖啡),然后停止录制。
  4. 在时间轴中找到互动轨道。

“互动”轨道。

在此示例中,互动轨道显示了指针互动。互动会显示 Whisker,用于指示处理时间边界处的输入和呈现延迟。将鼠标悬停在互动上,即可看到包含输入延迟、处理时间和呈现延迟的提示。

对于时长超过 200 毫秒的互动,Interactions 轨道还会在 Summary 标签页中以及悬停时的提示中显示 Interaction to Next Paint (INP) 警告:

INP 警告。

互动轨道会标记时长超过 200 毫秒的互动,并在右上角显示一个红色三角形。

查看 GPU 活动

GPU 部分中查看 GPU 活动。

GPU 部分。

查看光栅活动

线程池部分查看光栅活动。

“线程池”部分中的光栅活动。

分析每秒帧数 (FPS)

开发者工具提供了多种每秒分析帧的方法:

“Frames”部分

Frames 部分会准确告知您特定帧的耗时。

将鼠标悬停在某个帧上,即可查看包含该帧的更多信息的提示。

将鼠标悬停在某个帧上。

此示例显示了将鼠标悬停在帧上时显示的提示。

部分可显示四种类型的帧:

  1. 空闲帧(白色)。无任何更改。
  2. 框架(绿色)。按预期和按时呈现。
  3. 部分呈现的帧(黄色,带有稀疏的宽虚线图案)。Chrome 会尽力及时呈现至少部分视觉更新。例如,如果渲染程序主线程的工作(画布动画)延迟,但合成器线程(滚动)工作及时。
  4. 丢帧(红色,带有密集实线图案)。Chrome 无法在合理的时间内呈现帧。

将鼠标悬停在部分呈现的帧上。

此示例会在您将鼠标悬停在部分呈现的帧上时显示提示。

点击某个帧可在摘要标签页中查看更多有关该帧的信息。开发者工具会以蓝色勾勒出所选帧。

在“摘要”标签页中查看帧。

查看网络请求

展开网络部分,查看在性能记录期间发生的网络请求瀑布流。

在“广告网络”轨道中选择的请求,其中“摘要”标签页处于打开状态。

网络轨道名称旁边有一个图例,其中包含按颜色编码的请求类型。

阻塞渲染的请求在右上角标有红色三角形。

将鼠标悬停在某个请求上,即可看到包含以下信息的提示:

  • 请求的网址和执行该请求所花费的总时间。
  • 优先级或优先级更改,例如 Medium -> High
  • 请求是否为 Render blocking
  • 请求时间的明细,将在后面介绍。

当您点击某个请求时,网络轨道会绘制一个从其发起方指向该请求的箭头。

此外,效果面板会显示摘要标签页,其中包含有关请求的更多信息,包括但不限于初始优先级和(最终)优先级字段。如果它们的值不同,则表示请求的提取优先级在记录期间发生了变化。如需了解详情,请参阅使用 Fetch Priority API 优化资源加载

摘要标签页还会显示请求时间的明细。

“摘要”标签页中的请求时间细分。

www.google.com 的请求由左侧的线条 (|–) 表示,中间的条形包含深色部分和浅色部分,以及右侧的线条 (–|)。

您可以在网络标签页中找到其他时间细分。右键点击广告网络轨道中的相应请求,或在摘要标签页中右键点击该请求,然后点击在“网络”面板中显示。DevTools 会将您转到 Network 面板,并选择相应请求。打开其计时标签页。

“Network”面板中请求的“Timing”标签页。

这两种细分之间的对应关系如下:

  • 左侧行 (|–) 包含事件组 Connection start(含)之前的所有内容。也就是说,它是 Request Sent 之前的所有内容。
  • 条状标签的亮色部分为 Request sentWaiting for server response
  • 条形的深色部分为 Content download
  • 右侧线条 (–|) 是等待主线程所花的时间。网络 > 计时标签页不显示此信息。

查看内存指标

选中内存复选框可查看上次记录的内存指标。

“内存”复选框。

Summary 标签页上方,DevTools 会显示一个新的 Memory 图表。NET 图表下方还有一个名为 HEAP 的新图表。HEAP 图表与 Memory 图表中的 JS Heap 线提供相同的信息。

内存指标。

此示例显示了摘要标签页上方的内存指标。

图表上的彩色线条对应于图表上方的彩色复选框。停用复选框,以便在图表中隐藏该类别。

该图表仅显示所选录音的区域。在前面的示例中,内存图表仅显示了记录开始时(最多 1000 毫秒左右)的内存用量。

查看部分录音的时长

在分析 NetworkMain 等部分时,有时您需要更精确地估算某些事件所用的时间。按住 Shift 键,点击并按住,然后向左或向右拖动,以选择记录的一部分。在所选内容的底部,DevTools 会显示该部分所用的时间。

查看部分录制内容的时长。

在此示例中,所选部分底部的 488.53ms 时间戳表示该部分所用的时间。

查看屏幕截图

如需了解如何启用屏幕截图功能,请参阅在录制时截取屏幕截图

将鼠标悬停在时间轴概览上,即可查看记录中相应时间点的网页屏幕截图。时间轴概览部分包含 CPUFPSNET 图表。

正在查看屏幕截图。

您还可以点击画面部分中的某个画面来查看屏幕截图。DevTools 会在摘要标签页中显示屏幕截图的小版本。

正在“摘要”标签页中查看屏幕截图。

此示例显示了您在部分中点击摘要标签页中的 195.5ms 帧的屏幕截图。

点击摘要标签页中的缩略图可放大屏幕截图。

在“摘要”标签页中放大屏幕截图。

以下示例显示了您在摘要标签页中点击相应缩略图后,该报告的放大屏幕截图。

查看图层信息

要查看帧的高级图层信息,请执行以下操作:

  1. 启用高级绘制插桩
  2. 部分中选择一个帧。DevTools 会在事件日志标签页旁边的新图层标签页中显示图层的相关信息。

“图层”标签页。

将鼠标悬停在图层上可在图表中突出显示。

突出显示某个图层。

此示例显示了当您将鼠标悬停在图层 #39 上时,该图层会突出显示。

如需移动图表,请执行以下操作:

  • 点击 Pan Mode 图标 平移模式。 可沿 X 轴和 Y 轴移动。
  • 点击 rotation 模式 旋转模式。 可沿 Z 轴旋转。
  • 点击 Reset Transform 图标 重置转换。,将图表重置为原始位置。

查看图层分析的实际运作方式:

查看绘制性能分析器

如需查看绘制事件的详细信息,请执行以下操作:

  1. 启用高级绘制插桩
  2. Main 轨道中选择 Paint 事件。

“绘制性能分析器”标签页。

使用“渲染”标签页分析渲染性能

使用渲染标签页中的功能可直观了解网页的渲染性能。

打开渲染标签页

使用 FPS 计量器实时查看每秒帧数

“帧渲染统计信息”是一种会显示在视口右上角的叠加层。它可在页面运行时提供实时的 FPS 估算值。

请参阅帧渲染统计信息

使用“涂料闪烁”功能实时查看绘制活动

使用闪烁功能实时查看页面上的所有绘制事件。

请参阅绘制闪烁

查看带有图层边框的图层叠加层

使用图层边框可查看页面顶部的图层边框和图块的叠加层。

请参阅图层边框

实时查找滚动性能问题

使用滚动性能问题找出存在与滚动相关的事件监听器(可能会降低网页性能)的网页元素。开发者工具以蓝绿色勾勒出可能存在问题的元素。

请参阅滚动性能问题