【问题标题】: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 - 此类别包括以下事件。

  • GPU 任务

异步 - 此类别包括以下事件。

  • 异步任务

体验 - 此类别包括以下事件。

  • 布局移位

【讨论】:

    猜你喜欢
    • 2017-12-03
    • 1970-01-01
    • 2012-08-01
    • 2014-02-22
    • 2020-10-21
    • 2018-05-07
    • 2021-09-06
    • 2018-05-26
    • 2019-11-14
    相关资源
    最近更新 更多