Weitere ähnliche Inhalte
Ähnlich wie Chrome 佛心做了 Devtool 就是要用啊? 從 Timeline 學調效動畫效能 (20)
Chrome 佛心做了 Devtool 就是要用啊? 從 Timeline 學調效動畫效能
- 12. 選取⾃自訂範圍
shift + 滑⿏鼠
點選 frame 或 recode 取得詳細資料
範圍內工作性質的
圓餅分布圖
在 JavaScript 上
花費最多時間
Timeline: Flame chart view
- 17. 增加執⾏行 JavaScript 的效能
‧ 優化運算演算法
‧ 使用 Web Worker 運算複雜的運算
- e.g. sorting 或是 searching
‧ 當畫面有需求變更時,使用 requestAnimationFrame
- 22. Layout
‧ 當修改 element 的 geometry (e.g. width, top,etc)
會造成瀏覽器必須檢查頁面上所有其他的 elements
並且 reflow 頁面。
function 造成 Layout
Layout 所花的時間
共有多少 elements 受影響
開始 layout 的 root element
- 23. Layout 常⾒見問題
Forced Synchronous Layout
‧ 發生讓 layout 行為跟 JavaScript 同步執行的時候
因為加上 super-big class,console.log 需要先等跑 layout
計算完改變後正確的 style 後,才能把 offsetHeight log 出來
- 28. 增加執⾏行 Layout 效能
‧ 避免使用會造成 Layout 的屬性,不呼叫 Layout 最
好(geometric properties)
‧ 修改樣式時,使用 flexbox 取代 float (IE GG)
‧ 減少 selectors 的數量
‧ 減少 css selectors 的複雜度
在大多數的情況下,因為 selector matching 已經超級快了。
所以 refactor selectors 的進步空間通常不大...
少 trigger Layout 才是王道!!!
- 29. 檢視 Paint 效能
打開 Enable paint flashing
快速得知⺫⽬目前 painting 區塊
綠⾊色表⽰示 painting
- 31. Paint Profiler
(pink) - shapes (blue) - bitmap
(green) - text (purple) - misc
painting stack
bar 越⾼高表⽰示花約多時間
分布 pie chart
- 32. 增加執⾏行 Paint 效能
‧ 使用 transform and opacity property 製作動畫
圖⽚片來源:https://developers.google.com/web/fundamentals/performance/rendering/stick-to-compositor-only-properties-and-manage-layer-count?hl=en
認真想想,其實大部份的需求都可以用以下 property 完成
- 33. 增加執⾏行 Paint 效能
‧ 動畫記得使用 will-change 可以讓該 element 有自己
的 compositor layer
‧ 不支援 will-change 可用 transform: translateZ(0)
(檢查:can i use will-change)
‧ 避免 TOO MUCH ! 太多 Layers 會花更多 memory
- 37. REFERENCES
‧ render performance - Chrome developers*
‧ csstriggers.com
‧ print profiler - Chrome developers
‧ Timeline - Devtools
‧ pixels are expensive - aerotwist
‧ Accelerated Rendering in Chrome - The Layer Model
‧ How (not) to trigger a layout in WebKit
‧ layout thrashing cheatsheets
‧ Chrome 性能调优简介 - Tsung
‧ How to look performance - Chrome developers
* 主要重要來源