iOS效能最佳化小結

來源:互聯網
上載者:User

iOS效能最佳化分析

首先要熟悉幾個概念

  1. PNG 和 JPG 的區別是什麼?
    png格式的圖片有alpha通道,jpeg則沒有。png無損壓縮,jpeg允許你選擇0-100%的壓縮品質。如果需要alpha通道(透明),就只能用png格式.
  2. CPU 和 GPU

  3. 如果想看看兩者的區別,先得瞭解iOS視圖背後的層級結構原理 中的最底下一行是硬體層,由GPU和CPU組成。 我們經常說到的硬體加速其實是指OpenGL,Core Animation/UIKit基於GPU之上對電腦圖形合成以及繪製的實現,直到目前為止,iOS上的硬體加速能力還是大大領先與android,後者由於依賴CPU的繪製,絕大多數的動畫實現都會讓人感覺明顯的卡頓。

    iOS視圖渲染架構和原理

    1. UIView類的許多基礎行為嚴重依賴於另外一個2. 對象。 UIKit每個視圖對象的背後都有一個CoreAnimation層對象,它是一個CALayer類的執行個體,該類為視圖內容的渲染,布局,合成以及動畫提供基礎性的支援
    2. 和Mac OS不同的是, ios將CoreAnimation整合到視圖渲染實現的核心。 由於SDK中UIKit提供了透明的介面,開發人員大部分情況下,不必去關心和直接存取CoreAnimation。 但是如果要實現特別複雜的渲染和動畫,就需要使用到CoreAnimation的介面支援了
    3. CoreAnimation的基礎 CoreAnimation利用了硬體加速和架構上的最佳化來實現了快速渲染和即時動畫。當視圖的drawRect方法首次被調用時,層會將描畫的結果捕捉到一個位元影像中,並在隨後的重繪時,儘可能使用這個位元影像,以避免開銷太大。CoreAnimation把和視圖對象相關聯的層儲存在層樹的階層中。 可以在層樹中添加特殊層,實現不同的效果。層對象是IOS渲染和布局系統的推動力,大多數視圖屬性實際上是其層對象屬性的一個很薄的封裝。表示樹: 層在展示給使用者時當前的狀態。渲染樹:運行在單獨的線程上,不影響app主線程, 實現動畫渲染效果。

      如何最佳化視圖載入速度

      離屏繪製(Offscreen drawing)

      離屏繪製(Offscreen drawing)的話就是指GPU一邊在當前螢幕上進行繪製,而另一邊在螢幕還沒有處理映像資訊之前通過CPU來產生映像資訊的處理過程 在iOS當中,離屏繪製在以下的情況下會自動觸發:

      1.Core Graphics(任何以CG開頭的類)2.在drawRect方法裡,甚至是空方法實現3.所有shouldRasterize屬性是YES的CALayers對象  4.所有用了masks(setMasksToBounds)和動態陰影的(setShadow*)的CALayers對象5.所有文字的繪製,包括CoreText6.Group opacity(UIViewGroupOpacity)


      利用預渲染加速iOS裝置的映像顯示

      原來在顯示映像時,解壓和重採樣會消耗很多CPU時間;而如果預先在一個bitmap context裡畫出映像,再緩衝這個映像,就能省去這些繁重的工作了。為此,有可愛的人專門做了實驗

      可以看看具體的實驗的例子在http://mobile.51cto.com/iphone-279459.htm



      參考地址:http://www.taofengping.com/2013/05/17/designing-for-ios-graphics-performance/#.U4l3eFFvB50

      http://mobile.51cto.com/iphone-279459.htm

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.