chrome的performance知道好久了,但老是沒有特別權威且跟上時代的學習資料,此次痛定思痛,直接看英文文檔,一點點把這塊啃掉,本筆記基於Chrome 59git
目的是避免緩存以及沒必要要的問題github
谷歌性能測試地址googlechrome.github.io/devtools-sa…
能夠看到以下的頁面:
web
因爲有些用戶的設備cpu性能很高,沒法很好的分析移動端,或者發現低級設備的性能問題,因此咱們要降速
找到控制檯中的performance項,找到CPU選項,選擇下降4倍性能或6倍性能算法
前面限制了cpu的性能,接下來就要找到性能瓶頸了
連續點擊Add 10按鈕,向頁面中添加小塊,直到本身都感受頁面上小塊運動出現明顯卡頓
chrome
點擊一下Optimize優化,觀察一下效果
瀏覽器
再點擊一次Un-Optimize(不優化)按鈕,能夠看到又卡的要死
緩存
如何分析現象,確定要依賴數據,這裏就要用到chrome的performance功能了
先將頁面切到非優化的狀態,點擊「錄製」按鈕
性能優化
錄製4s-5s便可:
app
而後就能夠看到錄製的效果了:
函數
fps:是指頁面每秒幀數
fps = 60 性能極佳
fps < 24 會讓用戶感受到卡頓,由於人眼的識別主要是24幀
此時切換優化狀態,到已優化的狀態,再次進行性能錄製:
能夠看到此時:
1,沒有了紅色條
2,綠色半透明條的高度,明顯要比未優化的場景高度要高很多
總結:
紅色:意味着幀數已經降低到影響用戶體驗的程度,chrome已經幫你標註了,這塊有問題
綠色:其實就是Fps指數,全部綠色柱體高度越高,性能越好
對比能夠發現,cpu數據的一些特性:
1,cpu包括兩種狀態:
(1)充滿顏色
(2)不充滿顏色
2,cpu是否充滿顏色和fps存在聯繫
Net部分能夠將屏幕逐幀錄製下來,能夠幫助觀察頁面的狀態,主要用處,能夠幫助分析首屏渲染速度
這一幀的時間間隔是129.1ms
當前的fps是1000ms/129.1ms = 7.75fps,約等於8fps
1,duration是當前幀從796.31ms開始等待,796.31ms+127.73ms後進行了一次渲染
2,fps仍是老算法,1000ms/127.73ms約等於7fps
3,最下面是關鍵幀的視圖畫像
前面已經知道咱們的測試頁面有性能問題,那麼接下來就要想爲何了?
對性能進行錄製完成的時候,會默認在底部展現一個Summary摘要,顯示全局的信息
1,script執行耗時1952.8ms
2,render渲染耗時2986.8ms
3,Painting重繪耗時472.1ms
主要就是這3個耗時,知道了這三部分耗時,只是知道了,哪有問題,但具體問題在哪呢?
上圖,紅色邊框圈出來的,就是Main部分,其中每一塊是每一幀中所作的事情
目前這樣看不出來什麼,腦袋疼,爲了方便咱們觀看,咱們能夠在fps、cpu、net模塊,點擊一下,縮小時間區間
火焰圖,能夠簡單理解,x軸表示時間,y軸表示調用的函數,函數中還包含依次調用的函數,y軸只佔用x軸的一個時間維度
如上圖,能夠看到函數調用在代碼中的位置,能夠點擊進行查看
避免這種狀況的出現,能夠參考developers.google.com/web/fundame…
使用rail模型測量性能developers.google.com/web/fundame…
基礎儲備:
A Frame 的剖析aerotwist.com/blog/the-an…