【问题标题】:Chrome DevTools - Performance Tab SummaryChrome DevTools - 性能选项卡摘要
【发布时间】:2020-05-20 21:12:04
【问题描述】:
在 Chrome DevTools 的“性能”选项卡上,“摘要”面板显示了几类活动的时间 - 加载、脚本、渲染、绘画、系统、空闲。我似乎无法在 DevTools 文档中找到关于这些类别代表什么的简明描述。我觉得我必须忽略一些明显的东西。
我发现this SO post 描述了渲染和绘画之间的区别。加载类别在我的脑海中仍然很模糊。它似乎与网络时间无关,因为我看到的加载时间明显短于我在“网络”选项卡上看到的请求时间。
谁能指出描述性能摘要类别的文档?
【问题讨论】:
标签:
google-chrome
google-chrome-devtools
【解决方案1】:
@wOxxOm 向我指出了源代码(非常感谢!)。
我粗略地查看了代码,这里是我对 Chrome DevTools 性能类别的总结。
加载中:此类别包括以下事件。
- 解析HTML
- ParseAuthorStyleSheet
- FrameStartedLoading
- ResourceWillSendRequest
- 资源发送请求
- 资源接收响应
- 资源完成
- 资源接收数据
请注意,网络“飞行中”时间似乎不包含在此类别中。此类别包括设置网络调用的时间,但网络调用本身的时间并未包含在该类别中。您可以通过运行测试来验证这一点,在该测试中,您在“网络”选项卡上记录网络时间,在“性能”选项卡上记录性能时间。例如,从本地服务器下载页面时,性能选项卡加载时间为 37 毫秒;网络选项卡显示发出了 26 个请求,其中 10 个请求被缓存满足,但其余请求花费了 624 毫秒。性能选项卡上显示的 37 毫秒似乎是呼叫的设置,而网络选项卡上的 624 毫秒似乎是实际进行中的请求/响应时间。
脚本:此类别包括以下事件。
- 事件调度
- 定时器安装
- 定时器删除
- TimerFire
- XHRReadyStateChange
- XHR 加载
- 编译脚本
- 评估脚本
- 编译模块
- 评估模块
- StreamingCompileScriptParsing;
- WasmStreamFromResponseCallback
- WasmCompiledModule
- WasmCachedModule
- WasmModuleCacheHit
- WasmModuleCache 无效
- 标记加载
- 标记DOM内容
- 时间戳
- 控制台时间
- 用户计时
- RunMicrotasks
- 函数调用
- GC事件
- 主要GC
- MinorGC
- JSFrame
- RequestAnimationFrame
- CancelAnimationFrame
- FireAnimationFrame
- RequestIdleCallback
- CancelIdleCallback
- FireIdleCallback
- WebSocket 创建
- WebSocketSendHandshakeRequest
- WebSocketReceiveHandshakeResponse
- WebSocketDestroy
- EmbedderCallback
- 延迟信息
- GCCollectGarbage
- CryptoDoEncrypt
- CryptoDoEncryptReply
- CryptoDoDecrypt
- CryptoDoDecryptReply
- CryptoDoDigest
- CryptoDoDigestReply
- CryptoDoSign
- CryptoDoSign 回复
- CryptoDoVerify
- CryptoDoVerifyReply
这个类别中的事件是我认为你所期望的——脚本编译、函数调用、垃圾回收等。
渲染:此类别包括以下事件。
- 动画
- RequestMainThreadFrame
- 开始帧
- BeginMainThreadFrame
- 画框
- 命中测试
- ScheduleStyleRecalculation
- 重新计算样式
- 更新布局树
- 无效布局
- 布局
- 更新层树
- 滚动层
- MarkFCP
- MarkFMP
- 马克LCPC候选人
我以前很难理解“渲染”和“绘画”之间的区别,this SO post 帮助解释了区别。简而言之,渲染类别与页面布局的内存计算有关。
绘画:此类别包括以下事件。
- 油漆设置
- 画图
- 更新层
- 油漆
- 光栅任务
- 复合层
- MarkFirstPaint
- 解码图像
- 调整图片大小
绘画类别中的事件与实际在屏幕上绘制像素有关。
系统:此类别包括以下事件。
- StreamingCompileScript
- 任务
- 程序
空闲:此类别包括以下事件。
- StreamingCompileScriptWaiting
我不清楚的一件事是跟踪后台脚本编译事件的类别。这个 Chrome 功能在here 中被提及,并在this Akamai page 上进一步澄清。 Scripting 和 System 类别都有似乎暗示此功能的事件。
值得一提的是,Chrome 似乎还有一些其他事件类别可以跟踪,但在 DevTools 中不可见。这些类别是:
gpu - 此类别包括以下事件。
异步 - 此类别包括以下事件。
体验 - 此类别包括以下事件。