Xcode Instruments的微記錄

Instruments是Xcode套件中沒(méi)有被充分利用的一個(gè)工具。
Core Animation - 用來(lái)調(diào)試各種Core Animation性能問(wèn)題。它給我們提供了周期性的FPS,并考慮到了發(fā)生在程序之外的動(dòng)畫(huà)。
Core Animation工具提供了一系列復(fù)選框選項(xiàng)來(lái)幫助調(diào)試渲染瓶頸:

image.png
  • Color Blended Layers - 這個(gè)選項(xiàng)基于渲染程度對(duì)屏幕中的混合區(qū)域進(jìn)行綠到紅的高亮(也就是多個(gè)半透明圖層的疊加)。由于重繪的原因,混合隊(duì)GPU性能會(huì)有影響,同時(shí)也是滑動(dòng)或者動(dòng)畫(huà)幀率下降的罪魁禍?zhǔn)字弧?br> 勾選這個(gè)選項(xiàng)后,混合區(qū)域(blended layer)就會(huì)被顯示為紅色,而不透明的layer則是綠色。紅色越少越好。
  • Color Hits Green and Missed Red - 當(dāng)使用 shouleRasterizep 屬性的時(shí)候,耗時(shí)的圖層繪制會(huì)被緩存,然后當(dāng)做一個(gè)簡(jiǎn)單的扁平圖片呈現(xiàn)。當(dāng)緩存再生的時(shí)候這個(gè)選項(xiàng)就用紅色對(duì)柵格化圖層進(jìn)行了高亮。如果緩存頻繁再生的話(huà),就意味著柵格化可能會(huì)有負(fù)面的性能影響了。
    主要是檢測(cè)有無(wú)濫用或者正確使用 layer 的 shouldRasterize 屬性。成功被緩存的layer會(huì)標(biāo)注為綠色,沒(méi)有成功緩存的會(huì)被標(biāo)注成紅色。
  • Color Copied Images - 有時(shí)候寄宿圖片的生成意味著Core Animation被強(qiáng)制生成一些圖片,然后發(fā)送到渲染服務(wù)器,而不是簡(jiǎn)單的指向原始指針。這個(gè)選項(xiàng)把這些圖片渲染成藍(lán)色。復(fù)制圖片對(duì)內(nèi)存和CPU使用來(lái)說(shuō)都是一項(xiàng)非常昂貴的操作,所以應(yīng)該盡可能的避免。
    -Color Immediately - 通常Core Animation Instruments 以每毫秒10次的頻率更新圖層調(diào)式顏色。對(duì)某些效果來(lái)說(shuō),這顯然太慢了。這個(gè)選項(xiàng)就可以用來(lái)設(shè)置每幀都更新(可能會(huì)影響到渲染性能,而且會(huì)導(dǎo)致幀率測(cè)量不準(zhǔn),所以不要一直設(shè)置它)。
    -Color Misaligned Images - 這里會(huì)高亮那些被縮放或者拉伸以及沒(méi)有正確對(duì)齊到像素邊界的圖片(也就是非整型坐標(biāo))。這些中的大多數(shù)通常都會(huì)導(dǎo)致圖片的不正??s放,如果把一張大圖當(dāng)縮略圖顯示,或者不正確地模糊圖像,那么這個(gè)選項(xiàng)將會(huì)幫你識(shí)別出問(wèn)題所在。
    這個(gè)選項(xiàng)檢查了圖片是否被放縮,像素是否對(duì)齊。被放縮的圖片會(huì)被標(biāo)記為黃色,像素不對(duì)齊則會(huì)標(biāo)注為紫色。
    -Color Offscreen-Rendered Yellow - 這里會(huì)把那些需要離屏渲染的圖層高亮成黃色。這些圖層很可能需要用 shadowPath 或者 shouldRasterize 來(lái)優(yōu)化。
    -** Color Compositing Fast-Path Blue ** - 這個(gè)選項(xiàng)會(huì)對(duì)任何直接使用OpenGL繪制的圖層進(jìn)行高亮。如果僅僅使用 UIKit 或者 Core Animation 的API,那么不會(huì)有任何效果。如果使用 GLKView 或者 CA'EAGLLayer,那如果不顯示藍(lán)色塊的話(huà)就意味著你正在強(qiáng)制CPU渲染額外的紋理,而不是繪制到屏幕。
    -Flash Updated Regions - 這個(gè)選項(xiàng)會(huì)對(duì)重繪的內(nèi)容高亮成黃色(也就是任何在軟件層面使用Core Graphics繪制的圖層)。這種繪圖的速度很慢。如果頻繁發(fā)生這種情況的話(huà),這意味著有一個(gè)隱藏的bug或者說(shuō)通過(guò)增加緩存或者使用替代方案會(huì)有提升性能的空間。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容