chrome devtools使用詳解——Performance

本文會(huì)忽略一些過于基礎(chǔ)的知識(shí)和細(xì)節(jié)
持續(xù)更新,歡迎關(guān)注~ 2019-9-26 15:08:58

當(dāng)頁面卡頓、慢時(shí)可以使用Performance來分析問題

Performance 面板如下劃分成4個(gè)區(qū)域,可以使用在線測(cè)試DEMO進(jìn)行測(cè)試

區(qū)域1:控制面板


  • Screenshots
    截圖:默認(rèn)勾選,每一幀都會(huì)截圖。
    關(guān)閉后區(qū)域二下面部分會(huì)移除


    通過在時(shí)間線上移動(dòng)觀察頁面的變化

  • Memory
    內(nèi)存消耗記錄:勾選后可以看到各種內(nèi)存消耗曲線

以下配置都是用來模擬手機(jī)、慢網(wǎng)絡(luò)下使用的,無需可以跳過

  • Disable javaScript samples
    關(guān)閉javaScript樣本:減少在手機(jī)運(yùn)行時(shí)的開銷,模擬手機(jī)運(yùn)行時(shí)勾選

  • Network
    網(wǎng)絡(luò)模擬:可以模擬在3G / 4G等網(wǎng)絡(luò)條件下運(yùn)行頁面

  • Enable advanced paint instrumentation(slow)
    記錄渲染事件的細(xì)節(jié):選擇frames中的一塊,可以看到區(qū)域四多了個(gè)Layers

  • CPU
    CPU限制:主要為了模擬低CPU下運(yùn)行性能

區(qū)域2:概覽面板(overview)


可以通過選擇一個(gè)起始點(diǎn)按住鼠標(biāo)右鍵滑動(dòng)來選擇面板選中范圍


1 . FPS

FPS:每秒幀數(shù),對(duì)于動(dòng)畫而言標(biāo)準(zhǔn)是保持在60FPS

優(yōu)化
綠色越高越好,出現(xiàn)紅色則表示FPS低(這就是你為啥覺得頁面卡頓了),你可以在區(qū)域三Frames中看到具體的FPS值(見下面第二圖)。

demo測(cè)試
多點(diǎn)幾次DEMO的 ADD 10 按鈕,直到感覺畫面不流暢為止,開啟分析記錄,如下

點(diǎn)擊方塊可以看到57.1ms內(nèi)共有18fps


2 . CPU

CPU: 處理各個(gè)任務(wù)花費(fèi)的時(shí)間,選擇一段CPU統(tǒng)計(jì)可以在區(qū)域四的Summary看到統(tǒng)計(jì)表格

  • Scripting 腳本
  • Rendering 渲染
  • Painting 繪制
  • Loading 加載
  • ldle 閑置

優(yōu)化
比重占的大的顏色可能有問題,如上圖中的紫色部分Rendering,表示渲染耗費(fèi)時(shí)間久

3 . NET

NET:各個(gè)請(qǐng)求花費(fèi)時(shí)間
在下面的network里查看

注:各顏色表示的意義可以在network中查看

區(qū)域3:線程面板


區(qū)域3
1 . Frames

Frames:幀線程,鼠標(biāo)懸浮綠色塊可以看到fps

2. Main

Main:主線程,負(fù)責(zé)執(zhí)行Javascript, 解析HTML/CSS, 完成繪制。
可以看到主線程調(diào)用棧和耗時(shí)情況,每個(gè)長(zhǎng)條都是一個(gè)事件,懸浮可以看到耗時(shí)和事件名

  • x軸指時(shí)間
    最上面的第一條就是事件觸發(fā)的地方,直到結(jié)束,這條線是最長(zhǎng)的
  • y軸指調(diào)用棧
    上面的event調(diào)用了下面的子event,越到下面數(shù)量越少(瀑布)
主線程

顏色代表各個(gè)事件類型,以下列出一些常見的事件


事件類型
3. Raster

Raster:Raster線程,負(fù)責(zé)完成某個(gè)layer或者某些塊(tile)的繪制。

Raster

區(qū)域4:統(tǒng)計(jì)面板


統(tǒng)計(jì)面板選擇因點(diǎn)擊選擇不同的目標(biāo)統(tǒng)計(jì)的內(nèi)容不同

統(tǒng)計(jì)面板
  • Summary
    統(tǒng)計(jì)圖:展示各個(gè)事件階段耗費(fèi)的時(shí)間

  • Bottom-Up
    排序:可以看到各個(gè)事件消耗時(shí)間排序
    (1)self-time 指除去子事件這個(gè)事件本身消耗的時(shí)間
    (2)total-time 這個(gè)事件從開始到結(jié)束消耗的時(shí)間(包含子事件)

  • Call Tree
    調(diào)用棧:Main選擇一個(gè)事件,可以看到整個(gè)事件的調(diào)用棧(從最頂層到最底層,而不是只有當(dāng)前事件)

  • Event Log
    事件日志
    (1) 多了個(gè)start time,指事件在多少毫秒開始觸發(fā)的
    (2) 右邊有事件描述信息

其他功能


開啟實(shí)時(shí)監(jiān)控

image.png
  1. 在控制ctrl+shift+p打開命令行
  2. 搜索Show Rendering
  3. 勾選FPS Meter

layers 層

頁面是分層的,可以在

  1. More tools -> Layers 查看當(dāng)前頁面的層級(jí)分布
  2. Performance -> frame 選中一個(gè)塊,然后在最下面的Layers頁里查看

一些概念

FP 首次繪制,瀏覽器第一次顯示內(nèi)容
FCP 首次內(nèi)容繪制 ,瀏覽器第一次顯示來自DOM的內(nèi)容
FMP 首次重要繪制,在網(wǎng)頁上,幾乎總有一部分內(nèi)容比其他部分更重要。 如果頁面最重要的部分能迅速加載,用戶可能不會(huì)注意到其余部分是否加載?!具@部分內(nèi)容往往只有開發(fā)者清楚,瀏覽器無法給出指標(biāo)】
TTI 可交互時(shí)間

DOMContentLoaded 當(dāng)初始的 HTML 文檔被完全加載和解析完成之后(無需等待樣式表、圖像和子框架的完成加載)
load 需等待樣式表、圖像和子框架的完成加載

擴(kuò)展:瀏覽器渲染過程


參考文檔

https://segmentfault.com/a/1190000011516068#articleHeader0

http://www.bubuko.com/infodetail-2139139.html

http://www.xue63.com/toutiaojy/20180809A1URC200.html

http://www.css88.com/doc/chrome-devtools/rendering-tools/

https://www.cnblogs.com/hellotyc/p/7111518.html

https://developers.google.com/web/tools/chrome-devtools/evaluate-performance/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容