關于圖形性能方面懒棉,我們平時最關注的應該就是「幀率」這個概念了巷懈。在 Instruments 中该抒,我們可以使用 Core Animation
- Time Profiler
來評估圖形性能。使用步驟如下:
1顶燕、同「CPU 占用性能測試」一樣凑保,先在 Xcode 中對當前的項目執(zhí)行 Profile (Command-I),并在打開的對話框中選擇 Core Animaiton
這個模板:
image
2涌攻、進入 Instruments 后欧引,選擇正確的設備和應用程序。
3恳谎、點擊紅色按鈕運行應用程序芝此,隨著我們操作 App 界面,就可以看到幀率的變化和數(shù)據了:
image
在滑動屏幕時因痛,幀率越高表示性能越好婚苹,幀率過低則意味著屏幕可能會出現(xiàn)卡頓。
4鸵膏、在右下角面板的 Display Settings 區(qū)域膊升,我們可以看到多個 Debug Options:
Color Blended Layers
,這個選項選項基于渲染程度對屏幕中的混合區(qū)域進行綠到紅的高亮顯示谭企,越紅表示性能越差廓译,會對幀率等指標造成較大的影響结胀。紅色通常是由于多個半透明圖層疊加引起。
Color Hits Green and Misses Red
责循,當 UIView.layer.shouldRasterize = YES
時,耗時的圖片繪制會被緩存攀操,并當做一個簡單的扁平圖片來呈現(xiàn)院仿。這時候,如果頁面的其他區(qū)塊(比如 UITableViewCell 的復用)使用緩存直接命中速和,就顯示綠色歹垫,反之,如果不命中颠放,這時就顯示紅色排惨。紅色越多,性能越差碰凶。因為柵格化生成緩存的過程是有開銷的暮芭,如果緩存能被大量命中和有效使用,則總體上會降低開銷欲低,反之則意味著要頻繁生成新的緩存辕宏,這會讓性能問題雪上加霜。
Color Copied Images
砾莱,對于 GPU 不支持的色彩格式的圖片只能由 CPU 來處理瑞筐,把這樣的圖片標為藍色。藍色越多腊瑟,性能越差聚假。因為,我們不希望在滾動視圖的時候闰非,由 CPU 來處理圖片膘格,這樣可能會對主線程造成阻塞。
Color Immediately
河胎,通常 Core Animation Instruments 以每毫秒 10 次的頻率更新圖層調試顏色闯袒。對某些效果來說,這顯然太慢了游岳。這個選項就可以用來設置每幀都更新(可能會影響到渲染性能政敢,而且會導致幀率測量不準,所以不要一直都設置它)胚迫。
Color Misaligned Images
喷户,這個選項檢查了圖片是否被縮放,以及像素是否對齊访锻。被放縮的圖片會被標記為黃色褪尝,像素不對齊則會標注為紫色闹获。黃色、紫色越多河哑,性能越差避诽。
Color Offscreen-Rendered Yellow
,這個選項會把那些離屏渲染的圖層顯示為黃色璃谨。黃色越多沙庐,性能越差。這些顯示為黃色的圖層很可能需要用 shadowPath 或者 shouldRasterize 來優(yōu)化佳吞。
Color OpenGL Fast Path Blue
拱雏,這個選項會把任何直接使用 OpenGL 繪制的圖層顯示為藍色。藍色越多底扳,性能越好铸抑。如果僅僅使用 UIKit 或者 Core Animation 的 API,那么不會有任何效果衷模。如果使用 GLKView 或者 CAEAGLLayer鹊汛,那如果不顯示藍色塊的話就意味著你正在強制 CPU 渲染額外的紋理,而不是繪制到屏幕算芯。
Flash Updated Regions
柒昏,這個選項會把重繪的內容顯示為黃色。不該出現(xiàn)的黃色越多熙揍,性能越差职祷。通常我們希望只是更新的部分被標記完黃色。
我們可以使用這些選項届囚,來監(jiān)測更加具體的圖形性能有梆。
5、我們還可以選擇使用 OpenGL ES Analysis
意系、GPU Driver
等模板來監(jiān)測圖形相關性能泥耀。