淺談性能優化-CPU與GPU佈局渲染

1.CPU與GPU工作流程
2.卡頓原因分析
3.Hierarchy Viewr工具的使用
4.實戰解決過渡優化

CPU與GPU工作流程

CPU和GPU是什麼?CPU簡單來說就是說邏輯計算,系統管理,比如計算圖片的大小寬度,顯示操作等等,在沒有GPU的時代,不能顯示覆雜的圖形,運算速度也遠跟不上覆雜的三維遊戲要求,GPU是由CPU計算出來所得出來的結果進行繪製,就好比軍師和將軍的一種關係。

image.png

卡頓原因分析

由於人類眼睛特殊生理結構,如果所看畫面的幀率高於每秒10-12幀的時候,就認爲是連貫的。(12fps 科學研究而來)
在與手機的交互過程中,如觸摸和反饋60幀以下人是能感覺出來的,60幀以上不能覺察到變化,低於60fps時畫面感覺到卡頓

Android系統每隔16ms發出發出VSYNC信號(1000ms/60=16ms),出發對UI進行渲染,如果每次渲染都成功這樣就能夠達到流暢的畫面所需要的60fps,爲了能夠實現60fps,這意味着計算渲染的大多數操作都必須16ms內完成

卡頓原理分析

 

image.png

 

這意味着CPU和GPU兩者一定要在16ms時間內完成才能正常的顯示一幀
那麼如何減少這兩部分的時間呢?

CPU減少XML轉換成對象的時間
GPU減少重複繪製的時間

什麼是過渡繪製?
GPU的過渡繪製,就跟刷牆一樣,一層層的進行,16ms刷一次,這樣就會造成,圖層覆蓋的現象,既無用的圖層還被繪製在底層,造成不必要的浪費。
GPU過渡繪製的幾種情況?
自動以空間中,onDraw方法做了過多的重複繪製
佈局層次太深,重疊性太強,用戶看不到的區域GPU也會渲染,導致耗時增加,就就是爲什麼面試的時候被問到減少佈局嵌套也會提升渲染速度。原理就是這麼來的。

Hierarchy Viewr工具的使用

檢測APP裏面是否過渡繪製,大廠裏面的方法都是這麼幹的,在手機開發者模式裏面打開選項,

 

image.png

實戰解決過渡優化

以下就不貼代碼了

 

佈局優化一 去掉默認的背景

image.png

 

 

佈局優化二, 非業務需求如果背景都是白色的話,去掉二層容器背景,總之最好不要與父類背景顏色一致而疊加

image.png

佈局優化原則
減少不必要的嵌套,計算耗時
多使用include,因爲CPU在繪製一遍之後,會緩存起來,下載再用到直接從內存取

總結:
性能優化其實不僅僅是一中技術,而是一種思想,你只聽說過他的高大上,卻不知道它其實就是各個細節處深入研究和處理,就像擠牙膏一樣。
1、佈局裏是否有背景?
2、是否可以刪除多餘的佈局
3、自定義View重疊的佈局是否進行了裁剪
4、佈局是否扁平化



作者:大蘇打小檸檬
鏈接:https://www.jianshu.com/p/914738d25a5b
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章