1. 程式人生 > >chrome-performance頁面性能分析使用教程

chrome-performance頁面性能分析使用教程

不錯 包含 分享 eight time() 網絡 cin 回調 state

運行時性能表現(runtime performance)指的是當你的頁面在瀏覽器運行時的性能表現,而不是在下載頁面的時候的表現。這篇指南將會告訴你怎麽用Chrome DevTools Performance功能去分析運行時性能表現。在RAIL性能評估模型下,你可以在這篇指南中可以學到怎麽去用這個performance功能去分析Response, Animation, 以及 Idle 這三個性能指標。

一、模擬移動設備的CPU

移動設備的CPU一般比臺式機和筆記本弱很多。當你想分析頁面的時候,可以用CPU控制器(CPU Throttling)來模擬移動端設備CPU。

1在DevTools中,點擊 Performance 的 tab。

2確保 Screenshots checkbox 被選中

3點擊 Capture Settings(??)按鈕,DevTools會展示很多設置,來模擬各種狀況

4對於模擬CPU,選擇2x slowdown,於是Devtools就開始模擬兩倍低速CPU

5在DevTools中,點擊 Record 。這時候Devtools就開始錄制各種性能指標

6進行快速操作,點擊stop,處理數據,然後顯示性能報告

二、分析報告

FPS(frames per second)是用來分析動畫的一個主要性能指標。讓頁面效果能夠達到>=60fps(幀)/s的刷新頻率以避免出現卡頓。能保持在60的FPS的話,那麽用戶體驗就是不錯的。

為什麽是60fps?

我們的目標是保證頁面要有高於每秒60fps(幀)的刷新頻率,這和目前大多數顯示器的刷新率相吻合(60Hz)。如果網頁動畫能夠做到每秒60幀,就會跟顯示器同步刷新,達到最佳的視覺效果。這意味著,一秒之內進行60次重新渲染,每次重新渲染的時間不能超過16.66毫秒。

三、界面介紹

技術分享圖片

從上到下分別為4個區域
1:具體條,包含錄制,刷新頁面分析,清除結果等一系列操作
2:overview總覽圖,高度概括隨時間線的變動,包括FPS,CPU,NET
3:火焰圖,從不同的角度分析框選區域 。例如:Network,Frames, Interactions, Main等
4:總結區域:精確到毫秒級的分析,以及按調用層級,事件分類的整理

技術分享圖片

【Overview】

  Overview 窗格包含以下三個圖表:

  1、FPS。每秒幀數。綠色豎線越高,FPS 越高。 FPS 圖表上的紅色塊表示長時間幀,很可能會出現卡頓

  2、CPU。 CPU 資源。此面積圖指示消耗 CPU 資源的事件類型

  3、NET。每條彩色橫杠表示一種資源。橫杠越長,檢索資源所需的時間越長。 每個橫杠的淺色部分表示等待時間(從請求資源到第一個字節下載完成的時間)

  可以放大顯示一部分記錄,以便簡化分析。使用 Overview 窗格可以放大顯示一部分記錄。 放大後,火焰圖會自動縮放以匹配同一部分

  選擇部分後,可以使用 W、A、S 和 D 鍵調整您的選擇。 W 和 S 分別代表放大和縮小。 A 和 D 分別代表左移和右移

【火焰圖】

  在火焰圖上看到一到三條垂直的虛線。藍線代表 DOMContentLoaded 事件。 綠線代表首次繪制的時間。 紅線代表 load 事件

  在火焰圖中選擇事件時,Details 窗格會顯示與事件相關的其他信息

【總結區域】

藍色(Loading):網絡通信和HTML解析
黃色(Scripting):JavaScript執行
紫色(Rendering):樣式計算和布局,即重排
綠色(Painting):重繪
灰色(other):其它事件花費的時間
白色(Idle):空閑時間

Loading事件

事件

描述

Parse HTML

瀏覽器執行HTML解析

Finish Loading

網絡請求完畢事件

Receive Data

請求的響應數據到達事件,如果響應數據很大(拆包),可能會多次觸發該事件

Receive Response

響應頭報文到達時觸發

Send Request

發送網絡請求時觸發

Scripting事件

事件

描述

Animation Frame Fired

一個定義好的動畫幀發生並開始回調處理時觸發

Cancel Animation Frame

取消一個動畫幀時觸發

GC Event

垃圾回收時觸發

DOMContentLoaded

當頁面中的DOM內容加載並解析完畢時觸發

Evaluate Script

A script was evaluated.

Event

js事件

Function Call

只有當瀏覽器進入到js引擎中時觸發

Install Timer

創建計時器(調用setTimeout()和setInterval())時觸發

Request Animation Frame

A requestAnimationFrame() call scheduled a new frame

Remove Timer

當清除一個計時器時觸發

Time

調用console.time()觸發

Time End

調用console.timeEnd()觸發

Timer Fired

定時器激活回調後觸發

XHR Ready State Change

當一個異步請求為就緒狀態後觸發

XHR Load

當一個異步請求完成加載後觸發

Rendering事件

事件

描述

Invalidate layout

當DOM更改導致頁面布局失效時觸發

Layout

頁面布局計算執行時觸發

Recalculate style

Chrome重新計算元素樣式時觸發

Scroll

內嵌的視窗滾動時觸發

Painting事件

事件

描述

Composite Layers

Chrome的渲染引擎完成圖片層合並時觸發

Image Decode

一個圖片資源完成解碼後觸發

Image Resize

一個圖片被修改尺寸後觸發

Paint

合並後的層被繪制到對應顯示區域後觸發

chrome-performance頁面性能分析使用教程