Chrome的Performance面板

本文介绍了如何使用Chrome的DevTools进行性能分析,包括无痕模式确保干净环境,记录和分析页面加载与运行时性能,查看FPS,监控内存和CPU使用,以及网络速度控制等。此外,还详细讲解了不同视图如FPS图表、Frames模块、Bottom-Up标签页和CallTree标签页在性能诊断中的作用。

1、Performance介绍

1.1、概况图

https://i-blog.csdnimg.cn/blog_migrate/85c415088fe15787c2a3f26ffcc207aa.png#pic_center

1.2、无痕模式

无痕模式可以保证Chrome在一个相对干净的环境下运行,避免chrome上安装的插件影响性能分析结果。 文件—>打开新的无痕式窗口,或使用快捷键ctrl + shift + N 打开无痕模式下的chrome新标签页

1.3、性能记录

https://i-blog.csdnimg.cn/blog_migrate/2af76fe1122bee7ea58cb9e57a0b9878.png#pic_center

1.4、加载时性能记录录制

若要分析页面记载时性能需要录制加载时性能。

  1. 打开待分析性能的页面。

  2. 打开Devtools中Performance窗口。

  3. 点击左上角重新加载按钮。DevTools会自动记录页面加载是各项性能指标,加载完成几秒后自动停止记录。 Devtools记录会自动增加

https://i-blog.csdnimg.cn/blog_migrate/bb8e03170051d550efdf5fb6bee85ab3.png#pic_center

1.5、清除记录

清除 Performance 窗口中的记录数据。

1.6、抓取运行时屏幕快照

点选Screenshots选项开启为每一帧记录屏幕快照功能。

1.7、查看内存度量值

点选Memory 选项打开内存度量功能。 DevTools在Summary面板上侧显示一个新的Memory 图表。在 NET图表下边也显示一个HEAP图表。HEAP图表提供的信息同Memory面板中JS Heap提供的信息相同。

1.8、禁用JavaScript采样

https://i-blog.csdnimg.cn/blog_migrate/c95bd928d040627c6c4f28f65deaa92e.png#pic_center

1.9、控制录制过程中的网络加载速度

修改Network点选项,可自定义。

1.10、开启加速渲染工具

点选Enable advanced paint instrumentation选项(会带来大量的性能开销)

1.11、控制录制过程中CPU工作频率

https://i-blog.csdnimg.cn/blog_migrate/2ec778500833095f2deae8405c54a2b4.png#pic_center

1.12、控制录制过程中CPU工作频率

https://i-blog.csdnimg.cn/blog_migrate/bcb6c06744df2dc2a45e0ddbc4935978.png#pic_center

1.13、加载记录

单击鼠标右键选择 Load Profile加载记录。

2、分析性能记录

运行时或者加载时性能录制结束后,在Performance窗口中会显示相关数据,从而对于记录过程中的情况进行分析。

2.1、选择记录中的一部分

https://i-blog.csdnimg.cn/blog_migrate/fb408b670372e26fd762ae9f14bfddb8.png#pic_center

2.2、FPS(帧)信息

页面活动时的FPS变化信息,通常设备的屏幕的刷新频率是60FPS,超过的话,则有可能产生卡顿现象

https://i-blog.csdnimg.cn/blog_migrate/73509bc29b775f1d72ebb86c7d4d4a8a.png#pic_center

2.3、查看主线程活动

https://i-blog.csdnimg.cn/blog_migrate/b597c93b7417f81127b7e00f3b006e84.png#pic_center

DevTools采用随机的颜色标识脚本信息,如上面图中浅绿色标识函数调用,深黄色标识脚本活动。

若想隐藏火焰图中的JavaScript中调用的详细信息,请查看前面介绍的禁用JavaScript样例功能。若禁用JavaScript样例功能,你只可以看到初始调用事件。比如,图中标识的Timer fired 和Function Call 。

2.4、在表格中查看活动

录制结束后,利用Main窗口中信息不是分析数据的唯一方式。DevTools另外提供了三种表格式分析活动方式,每种方式都是从不同的角度出发: 若想分析那些活动占用时间更多时,可以利用 Bottom-Up窗口。 若想分析导致更多活动的根活动时,可以采用 Call Tree。 若想按顺序分析记录中发生的活动时,可以利用Event Log窗口。

2.5、根活动

根活动指的是浏览器触发的一系列流程。例如,当你点击页面内容,浏览器触发一个Event作为根活动,该Event可能回调一个事件处理事件。 在Main面板中的火焰图中,根活动展示在上部,在Call Tree和Event Log面板中,根活动展示在顶层。

2.6、Call Tree标签页

Call Tree 标签页中展示记录中被选中部分的活动信息。

https://i-blog.csdnimg.cn/blog_migrate/42aee89668563bc6cf62fa5e10e36f19.png#pic_center

https://i-blog.csdnimg.cn/blog_migrate/db56d99d05d92c2df022f803ea8a73a9.png#pic_center

2.7、Bottom-Up标签页

利用Bottom-Up标签查看占用最多时间的活动。对占用活动的排序。 Self Time表示对应活动消耗的时间。 Total Time表示对应活动以及子活动共同消耗的时间。

2.8、Event Log标签页

https://i-blog.csdnimg.cn/blog_migrate/a4c0e697446c40566924151ead373f11.png#pic_center

2.9、Network模块

https://i-blog.csdnimg.cn/blog_migrate/7869643b301ffaddc4930ec0ffdc767f.png#pic_center

2.10、分析每秒传输帧数(FPS)

  • 查看FPS图表了解整个记录中FPS的概况。

  • Frames模块查看每一帧时间消耗。

  • 利用FPS meter工具(MoreTools—>Rendering)在页面运行时实时查看FPS信息。

2.11、FPS图表

FPS 图表显示了整个记录过程中帧率的概况。图表中绿色折线越高代表帧率越好。 FPS折线图上测出现的红色横线为一条性能警示线,表示帧率低于该值会严重影响用户体验。

2.12、Frames模块

Frames 模块清晰表明每个帧消耗时间。 鼠标在某一帧上悬停可以查看更多详细信息。

2.13、查看交互信息

利用Interactions模块查看并分析记录过程中用户的交互操作。

2.14、查看GPU活动

https://i-blog.csdnimg.cn/blog_migrate/6c4957003a2abfd8bcc41f413025f57d.png#pic_center

2.15、查看栅格活动

在Raster模块查看栅格活动信息

Chrome DevTools 的 Performance 面板可以用于分析页面加载时间和找出性能瓶颈,Lighthouse 工具则能对网页性能进行全面评估。以下是使用 Chrome DevTools Performance 面板分析加载时间与瓶颈以及用 Lighthouse 工具进行性能评估的教程: ### 使用 Chrome DevTools Performance 面板分析加载时间和瓶颈 1. **打开 Chrome DevTools** - 打开需要分析的网页。 - 右键点击页面,选择“检查”,或者使用快捷键(Windows/Linux: `Ctrl + Shift + I`;Mac: `Cmd + Opt + I`)打开 Chrome DevTools。 2. **选择 Performance 面板** - 在 Chrome DevTools 中,点击“Performance”选项卡。 3. **配置记录选项** - 在“Performance面板中,确保“CPU”选择合适的模拟速度(例如 4x slowdown 用于模拟较慢的设备)。 - 可以勾选“Memory”来记录内存使用情况,勾选“Network”来记录网络请求。 4. **开始记录** - 点击“Record”按钮开始记录页面的性能数据。 - 重新加载页面或进行你想要分析的操作。 - 操作完成后,点击“Stop”按钮停止记录。 5. **分析记录结果** - **加载时间分析**:查看“Overview”部分,这里会显示页面的加载时间轴,包括 FCP(首次内容绘制)、LCP(最大内容绘制)等关键指标。 - **瓶颈分析**:查看“Main”线程的火焰图,找出耗时较长的任务。火焰图中,每个矩形代表一个函数调用,矩形越宽表示执行时间越长。可以点击矩形查看详细信息,包括函数名称、执行时间等。 - **网络请求分析**:在“Network”部分,可以查看每个网络请求的详细信息,包括请求时间、响应时间、资源大小等。找出加载时间较长的资源,考虑优化这些资源的加载。 ### 使用 Lighthouse 工具进行性能评估 1. **打开 Lighthouse 面板** - 在 Chrome DevTools 中,点击“Lighthouse”选项卡。 2. **配置评估选项** - 选择要评估的类别,如“Performance”、“Accessibility”、“Best Practices”等。 - 选择要评估的设备类型,如“Desktop”或“Mobile”。 3. **开始评估** - 点击“Generate report”按钮开始评估。Lighthouse 会对页面进行全面的性能评估,并生成一份详细的报告。 4. **分析评估报告** - **性能得分**:报告的顶部会显示一个综合性能得分,范围从 0 到 100。得分越高表示性能越好。 - **关键指标**:报告中会列出关键的性能指标,如 FCP、LCP、CLS(累积布局偏移)等,并给出相应的建议。 - **优化建议**:报告中会提供具体的优化建议,如压缩图片、减少 HTTP 请求、优化 CSS 和 JavaScript 等。 通过以上步骤,你可以使用 Chrome DevTools Performance 面板分析页面的加载时间和瓶颈,使用 Lighthouse 工具进行全面的性能评估,并根据评估结果进行优化。 ```javascript // 示例代码:使用 Chrome DevTools Performance API 记录性能数据 performance.mark('start'); // 执行一些操作 performance.mark('end'); performance.measure('operation', 'start', 'end'); const entry = performance.getEntriesByName('operation')[0]; console.log(`操作耗时: ${entry.duration} 毫秒`); ```
当前博文未提及该问题,以下是基于C知道的知识内容为您回答。 Chrome DevTools 的 **Performance 面板**是分析页面运行时性能(如滚动卡顿、动画掉帧)和加载性能(如首屏时间过长)的核心工具。它能以毫秒级的精度记录浏览器在一段时间内的所有活动,并生成可视化的火焰图,帮助开发者定位性能瓶颈 [ref_2][ref_3][ref_5]。 ### 一、 核心使用流程:四步定位性能问题 使用 Performance 面板的核心流程可以概括为:**准备 -> 录制 -> 分析 -> 优化**。以下是详细的步骤与操作指南。 | 步骤 | 关键操作 | 目的与说明 | | :--- | :--- | :--- | | **1. 准备工作** | 开启无痕模式、禁用缓存、限制CPU/网络 | 排除浏览器扩展和缓存的干扰,模拟真实用户环境 [ref_3][ref_4]。 | | **2. 开始录制** | 点击“记录”按钮,执行待分析的交互(如滚动) | 捕获从交互开始到结束期间,浏览器主线程、GPU、内存等的完整活动。 | | **3. 停止并分析** | 停止录制,查看生成的火焰图和各项指标 | 在概览面板和火焰图中,寻找长任务、高布局/重绘耗时等异常点。 | | **4. 定位与优化** | 深入查看 Call Tree、Bottom-Up 等视图 | 精确定位到具体的函数调用、DOM操作或样式计算,找出“罪魁祸首”。 | ### 二、 详细操作指南与截图说明 #### 步骤1:准备工作与环境设置 在开始录制前,进行正确的环境设置至关重要。 1. 打开 Chrome 开发者工具 (`F12` 或 `Ctrl+Shift+I`)。 2. 切换到 **Performance** 面板。 3. 点击面板左上角的 **⚙️** (设置) 图标,确保以下选项已勾选或设置: * **Network**: 选择 “Fast 3G” 或 “Slow 3G” 来模拟弱网环境(分析加载性能时)。 * **CPU**: 选择 “4x slowdown” 或 “6x slowdown” 来模拟低端设备的CPU性能(分析运行时卡顿时非常有用)[ref_4]。 4. 在开发者工具右上角,点击 **三个点** -> **More tools** -> **Rendering**,打开 Rendering 面板。可以在这里开启 **Paint flashing**(查看重绘区域)和 **FPS meter**(实时查看帧率)作为辅助 [ref_3][ref_6]。 #### 步骤2:录制性能数据 1. 在 Performance 面板,点击圆形 **⚫** 按钮(或按 `Ctrl+E` / `Cmd+E`)开始录制。 2. **立即执行你想要分析的交互**。例如,如果你觉得页面滚动卡顿,就在页面上快速、连续地滚动几次。 3. 交互完成后,点击 **🔴** 按钮(或再次按 `Ctrl+E` / `Cmd+E`)停止录制。 #### 步骤3:解读性能报告(核心) 录制结束后,工具会自动生成一份性能报告。报告主要分为三个区域: **1. 概览面板 (Overview)** 位于最上方,提供了高层次的性能指标概览,从左到右依次是: * **FPS (帧率)**:绿色竖条越高越好,红色块表示可能掉帧 [ref_4]。 * **CPU**:不同颜色代表不同活动类型(如脚本、渲染、绘制、空闲等)的CPU占用。 * **NET**:网络请求的瀑布流。 **2. 火焰图 (Flame Chart) / 主线程面板** 这是分析的核心区域,显示了主线程随时间推移的执行情况。 * **横轴是时间**,纵轴是调用栈。 * **颜色含义**: * **黄色**:JavaScript 执行时间。 * **紫色**:样式计算与布局(重排)。 * **绿色**:绘制(重绘)与合成。 * **寻找“长任务”**:任何**超过50ms**的黄色块(任务)都被视为“长任务”,是导致卡顿的直接原因。将鼠标悬停在长任务上,可以看到其具体耗时 [ref_2][ref_5]。 **3. 详情面板 (Details Pane)** 点击火焰图中的任意一个色块,下方会显示其详细信息。 * **Summary 标签**:展示所选时间段内各类活动的时间占比。 * **Bottom-Up 标签**:按“自底向上”的方式,列出哪个函数或操作消耗了最多时间。这是定位“性能热点”最有效的视图之一 [ref_3][ref_5]。 * **Call Tree 标签**:按“自顶向下”的方式,展示完整的函数调用栈。 * **Event Log 标签**:按时间顺序列出所有发生的事件(如 `click`, `scroll`, `Animation Frame` 等)。 ### 三、 实战案例:分析滚动卡顿 假设你录制了一段滚动操作的性能数据,分析步骤如下: 1. **第一步:看概览 (Overview)**。查看 **FPS** 曲线,是否有频繁的红色下降或灰色缺口(帧率过低)。同时看 **CPU** 图表,在滚动期间是否长时间处于非“空闲”状态 [ref_4]。 2. **第二步:看火焰图 (Flame Chart)**。在滚动对应的时间段内,寻找: * **密集的紫色块**:表示频繁的“布局”操作 (`Recalculate Style`, `Layout`),这通常是滚动卡顿的元凶。 * **长条的黄色块**:表示有耗时的 JavaScript 任务正在执行,可能阻塞了滚动。 * **连续的绿色块**:表示大量的绘制操作 [ref_2]。 3. **第三步:深入详情 (Bottom-Up)**。点击一个可疑的紫色块(例如一个 `Layout` 任务),然后在 **Bottom-Up** 标签页中排序。你可能会发现,导致这个布局的“罪魁祸首”是一个频繁读取 `offsetTop` 或 `scrollHeight` 的 JavaScript 函数 [ref_3]。 ```javascript // 示例:在火焰图中定位到的可疑代码模式 function badScrollHandler() { // 在滚动事件中频繁读取布局属性,会强制浏览器进行同步布局 let height = element.offsetHeight; // 触发强制同步布局! // ... 一些基于 height 的计算 } ``` *优化思路:将这类读取操作移到滚动事件外,或使用 `requestAnimationFrame` 节流 [ref_2]。* 4. **第四步:结合 Rendering 面板**。如果你开启了 **Paint flashing**,在页面上滚动时,会看到频繁闪烁的区域。这些区域就是重绘发生的地方。优化这些区域的样式(如减少 `box-shadow` 的使用,或将固定背景的元素提升到合成层)可以显著提升性能 [ref_6]。 ### 四、 关键性能指标解读 Performance 面板还会计算并展示一些关键的性能指标,帮助你量化体验: * **FPS (Frames Per Second)**:**目标应始终接近 60**。任何低于此值的持续帧率都可能导致卡顿。 * **DCL (DOMContentLoaded)**:DOM 加载完成的时间。 * **LCP (Largest Contentful Paint)**:最大内容绘制时间,衡量加载速度。 * **CLS (Cumulative Layout Shift)**:累计布局偏移,衡量视觉稳定性。 * **Long Tasks**:任何在主线程上运行超过 **50 毫秒**的任务。这是导致页面无法响应用户输入(如滚动、点击)的直接原因 [ref_5]。 **总结**:使用 Performance 面板的核心是 **“录制-定位-优化”** 的循环。通过录制有问题的交互,在火焰图中找到耗时的长任务或频繁的布局/绘制操作,然后利用 Bottom-Up 等视图定位到具体的代码行。最后,应用优化策略(如使用 `transform` 替代 `top/left` 动画、避免强制同步布局、对长列表进行虚拟化)来解决问题。这是一个需要反复实践和分析的过程,但它是解决前端性能问题的根本方法 [ref_2][ref_3][ref_5][ref_6]。
# Google Performance 使用攻略详解 ## 一、Performance 工具概述 Google PerformanceChrome DevTools 中的一个核心面板,专门用于分析和优化网页性能。该工具能够帮助开发者识别性能瓶颈,测量页面加载时间,分析运行时性能,并提供详细的性能指标数据[ref_3][ref_5]。 | 功能模块 | 主要用途 | 适用场景 | |---------|---------|---------| | 性能分析 | 记录和分析运行时性能 | 页面卡顿、动画不流畅 | | 加载性能 | 测量页面加载时间 | 首屏加载慢、资源加载优化 | | 内存分析 | 检测内存泄漏 | 页面内存占用过高 | | 用户体验 | 评估核心网页指标 | 用户体验优化 | ## 二、Performance 面板核心功能详解 ### 2.1 性能记录与分析 Performance 面板的核心功能是记录页面在特定时间段内的性能数据,包括: ```javascript // 启动性能记录 // 方法1:点击Record按钮 // 方法2:使用快捷键Ctrl+E(Windows)或Cmd+E(Mac) // 方法3:通过命令行API console.profile('性能分析会话'); // 执行需要分析的代码 for(let i = 0; i < 100000; i++) { // 模拟复杂计算 const result = Math.sqrt(i) * Math.random(); } // 停止记录 console.profileEnd('性能分析会话'); ``` **关键指标解析:** - **FPS(帧率)**:衡量页面动画流畅度,理想值应保持在60FPS - **CPU使用率**:显示各任务对CPU资源的占用情况 - **网络请求**:可视化资源加载时间和顺序 - **主线程活动**:分析JavaScript执行、样式计算、布局等任务 ### 2.2 性能指标解读 Performance 面板提供多种关键性能指标: | 指标名称 | 标准值 | 优化建议 | |---------|-------|---------| | First Contentful Paint | <1.5s | 优化关键资源加载 | | Largest Contentful Paint | <2.5s | 优先加载主要内容 | | Cumulative Layout Shift | <0.1 | 避免布局偏移 | | First Input Delay | <100ms | 减少主线程阻塞 | ## 三、实战使用步骤 ### 3.1 性能记录流程 ```javascript // 步骤1:打开Performance面板 // 步骤2:配置记录选项 const recordingOptions = { captureScreenshots: true, // 捕获屏幕截图 captureMemory: true, // 捕获内存分配 captureJSCallStacks: true // 捕获JS调用栈 }; // 步骤3:开始记录并执行用户操作 // 步骤4:停止记录并分析结果 ``` **详细操作流程:** 1. **打开DevTools**:按F12或右键检查元素 2. **切换到Performance面板**:点击对应标签页 3. **配置记录设置**:根据需求启用相应选项 4. **开始记录**:点击圆形记录按钮 5. **执行测试场景**:进行页面交互操作 6. **停止记录**:再次点击记录按钮 7. **分析结果**:查看生成的性能报告[ref_6] ### 3.2 性能问题诊断 通过Performance面板可以诊断多种常见性能问题: ```javascript // 示例:诊断布局抖动问题 function diagnoseLayoutThrashing() { // 检测强制同步布局 const elements = document.querySelectorAll('.dynamic-element'); // 错误的做法:导致布局抖动 elements.forEach(element => { const width = element.offsetWidth; // 强制布局 element.style.width = width + 10 + 'px'; }); // 正确的做法:批量读取和写入 const widths = []; elements.forEach(element => { widths.push(element.offsetWidth); }); elements.forEach((element, index) => { element.style.width = widths[index] + 10 + 'px'; }); } ``` ## 四、高级功能与技巧 ### 4.1 内存分析 Performance面板与Memory面板结合使用,可以深入分析内存使用情况: ```javascript // 内存分析示例 class MemoryIntensiveOperation { constructor() { this.data = new Array(1000000).fill({}); } processData() { // 模拟内存密集型操作 return this.data.map(item => ({ ...item, processed: true, timestamp: Date.now() })); } } // 在Performance记录期间监控内存使用 ``` ### 4.2 网络性能分析 通过Network标签分析资源加载性能: | 资源类型 | 优化策略 | 性能影响 | |---------|---------|---------| | JavaScript | 代码分割、懒加载 | 高 | | CSS | 关键CSS内联、异步加载 | 中 | | 图片 | 压缩、WebP格式、懒加载 | 中 | | 字体 | 子集化、display:swap | 低 | ## 五、性能优化实战案例 ### 5.1 渲染性能优化 ```javascript // 优化前:导致性能问题的代码 function inefficientRendering() { const container = document.getElementById('list'); for(let i = 0; i < 1000; i++) { const item = document.createElement('div'); item.textContent = `Item ${i}`; item.style.opacity = Math.random(); // 频繁样式变更 container.appendChild(item); // 多次重排 } } // 优化后:使用文档片段和批量更新 function optimizedRendering() { const container = document.getElementById('list'); const fragment = document.createDocumentFragment(); // 批量创建元素 for(let i = 0; i < 1000; i++) { const item = document.createElement('div'); item.textContent = `Item ${i}`; item.className = 'list-item'; // 使用CSS类 fragment.appendChild(item); } // 一次性添加到DOM container.appendChild(fragment); } ``` ### 5.2 JavaScript执行优化 ```javascript // 使用Performance API进行细粒度监控 function monitorPerformance() { // 标记性能测量点 performance.mark('operation-start'); // 执行需要监控的操作 performComplexCalculation(); performance.mark('operation-end'); // 测量时间间隔 performance.measure('complex-calculation', 'operation-start', 'operation-end'); // 获取测量结果 const measures = performance.getEntriesByName('complex-calculation'); console.log(`操作耗时: ${measures[0].duration}ms`); } ``` ## 六、最佳实践与建议 ### 6.1 性能监控策略 1. **定期性能审计**:建立性能基准并定期测试 2. **真实用户监控**:结合Real User Monitoring数据 3. **自动化测试**:集成到CI/CD流程中 4. **渐进式优化**:优先解决影响最大的问题 ### 6.2 工具使用技巧 - **使用节流功能**:模拟慢速网络和CPU限制 - **保存性能档案**:便于对比优化效果 - **关注关键路径**:优先优化影响用户体验的核心指标 - **结合其他工具**:与Lighthouse、PageSpeed Insights配合使用[ref_5][ref_6] 通过熟练掌握Google Performance工具的使用方法,开发者能够系统性地识别和解决网页性能问题,显著提升用户体验和页面加载速度。建议在实际开发过程中结合具体业务场景,定期进行性能分析和优化,确保网站始终保持良好的性能表现。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值