這篇文章Google開發者中DevTools[1]文檔Performance部分的英文譯文,若有翻譯不對的地方,但願你們指出javascript
原文:developers.google.com/web/tools/c…
做者: Kayce Basques
譯者: Timwkjava
注:未經許可,請勿轉載git
「注:能夠查看優化網站速度以瞭解如何使您的頁面加載速度更快。」github
運行性能(Runtime performance)是頁面運行(而不是加載)時的性能。 本教程將教您如何使用「Chrome DevTools」的性能選項卡(performance)來分析運行性能。 在RAIL(response, animation, idle, load)模型方面,您在本教程中學習的技能對於分析頁面的響應,動畫和空閒階段頗有用。web
在本次教程中,你在頁面中打開 「DevTools」,並使用「Performance」 選項卡來查找頁面的性能瓶頸chrome
DevTools
,效果以下圖: ˆ
「圖1」 頁面在左邊,DevTools在右邊
與臺式電腦和筆記本相比,移動設備的CPU的性能要低不少。因此當你分析頁面,通常使用CPU限制來模擬頁面在移動設備上的表現;瀏覽器
由於很難建立一個使全部用戶都表現一致的運行性能演示頁面[2]。接下來你須要自定義演示,以確保在你的條件下,你的體驗與本教程中看到的屏幕截圖和說明相對一致;app
單擊「Add 10」 按鈕,知道藍色方塊的移動速度明顯比初始時慢。在性能好的計算機上,可能須要約20次的點擊編輯器
單擊「Optimize」(優化)按鈕,藍色方塊能移動得更快更穩chrome-devtools
當您運行頁面的優化版本時,藍色方塊移動得更快。 這是爲何? 兩種版本都應在相同的時間內將每一個正方形移動相同的空間。 在「performance」選項卡中進行錄製,能夠了解如何檢測未優化版本中的性能瓶頸。
「圖3」:頁面分析
wow, 這是數據量也太大了吧。但不用擔憂,接下來你就會知道這些數據的含義的;
記錄了頁面的性能後,就能夠衡量頁面的性能有多差,並找出緣由。
衡量動畫性能的主要指標是每秒幀數(FPS)。 當動畫以60 FPS運行時,用戶看着是流暢的[3]。
查看「FPS」表,若是你在圖標的上方看到紅色條,則表示頁面幀數很低,會影響用戶的使用體驗(譯者:會讓用戶以爲有卡頓出現) 「圖5」:藍框標識的是 FPS 圖表
在 FPS 圖表下方,你會看到CPU圖標。CPU圖表中的顏色與「Performance」選項卡底部的「Summary」選項卡的顏色對應。CPU圖表中,顏色填充的高度越高則表示使用CPU的資源越多。當你看到CPU長時間處於滿負荷的狀態,就須要尋找減小使用CPU的方法; ˆ
「圖6」:藍框標識CPU圖標和「Summary」選項卡
將鼠標懸停在FPS,CPU或NET圖表上。 「DevTools」將顯示該時間點的頁面截圖。 左右移動鼠標以顯示記錄。 這稱爲 scrubbing(譯者:這裏暫時沒找到合適的翻譯),對於手動分析動畫的播放頗有用。 「圖7」:查看記錄中約2000ms處頁面的屏幕截圖
在「Frames」(幀)部分,將鼠標懸停在某個綠色的方塊上,「DevTools」 會顯示特定幀的FPS,幀數可能遠遠達不到 60 FPS 的目標;
「圖8」:懸停在幀上
在這個演示上,咱們能很明顯的看出頁面效果很差。但在實際狀況中,可能不會很明顯,所以使用這些工具能很方便的進行檢測。
另外一個方便的工具是FPS測量儀,它能夠在頁面運行時提供FPS的實時估算。
「圖9」:FPS 面板
如今,您已經測量並驗證了動畫效果不佳,接下來要回答的問題是:爲何?
「圖10」:藍色框是「Summary」選項卡
「圖11」:藍色框是「Main」塊
Animation Frame Fired
事件
Animation Frame Fired
事件時,
「Summary」選項卡會顯示該事件的相關信息。注意
reveal
連接,點擊連接,
「DevTools」會突出顯示啓動該
Animation Frame Fired
事件的事件。同時還要注意
app.js:94
連接,點擊會跳到源代碼中的相關行。
「圖12」:關於Animation Frame Fired
事件的更多消息
在app.update
事件下方,有一堆紫色事件。若是將其放寬,會看到幾乎每一個紫色事件上都有一個紅色三角形。如今單擊其中一個紫色的Layout
事件。查看「DevTools」中的「Summary」選項卡提供的信息,會發現確實存在強制重排(reflows)的警告(也就是強制佈局的警告)
在「Summary」選項卡中,單擊Layout Forced
下的app.js:70
連接,「DevTools」會切換到觸發強制佈局的代碼行
「圖13」:觸發強制佈局的代碼行
作得很好,因此花費了一些時間,可是如今你已經有分析運行性能的堅實基礎了。
單擊演示頁面上的Optimize
按鈕,啓動優化了代碼的版本,而後使用剛學習的流程和工具進行性能記錄,而後分析結果。從改進的幀率到「Main」塊火焰圖中事件的減小,你看到優化版本的應用作了更少的工做,從而得到更好的性能;
RAIL模型是瞭解性能的基礎。該模型告訴你,對用戶而言,哪些是最重要的性能指標。有關更多信息,請查看Measure performance with the RAIL model
更多的實踐能讓你對「Performance」選項卡更加的熟悉。請嘗試對你本身的頁面進行分析,並分析結果。若是你對你的結果有任何疑問,能夠在Stack Overflow發佈一個標有google-chrome-devtools
標籤的問題。若是能夠,請附上屏幕截圖或指向可複製頁面的連接
要真正掌握運行時性能,你必須學習瀏覽器如何將HTML、CSS和JS轉換爲屏幕上像素點。能夠從 Rendering Performance Overview開始學習。The Anatomy Of A Frame這篇文章深刻討論了更多細節。
最後,有許多方法能夠改善運行時性能。 本教程重點介紹了一個特定的動畫瓶頸,以使您能夠重點關注「Performance」面板,但這只是您可能遇到的許多瓶頸之一。 渲染性能系列的其他部分提供了許多改善運行時性能各個方面的好技巧,例如:
Devtools是什麼: chrome的開發者工具,由幾個選項卡工具組成。
[2]沒法獲得表現一致的演示(譯者注): 由於用戶的設備配置和performance選項版配置的不一樣。
[3]爲何是60 FPS: 與人眼識別有關係
本文使用 mdnice 排版