閑著沒事分衫,想起最近好多關(guān)于性能的文章涮阔,決定去研究一下Instruments 的使用身坐。
要使用就得知道這東西是啥其弊。
官方文檔點(diǎn)這個(gè)鏈接https://developer.apple.com/library/ios/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/
還有一個(gè)不知道什么版本的中文翻譯鏈接http://cdn.cocimg.com/bbs/attachment/Fid_6/6_24457_90eabb4ed5b3863.pdf
Core Animation
第一個(gè)選項(xiàng) 混合圖層
設(shè)備會(huì)把當(dāng)前圖層和背景圖層進(jìn)行alphe疊加状婶,這是一項(xiàng)很耗性能的一件事就漾。如果動(dòng)畫中每一幀都做疊加盆佣,性能的損耗是很嚴(yán)重辈毯。
優(yōu)化方式:
1.uiview 盡量設(shè)成與superview 同背景色
2.貼圖避免使用帶alpha通道的圖片仑氛,
如果必須使用Alpha乙埃,則主動(dòng)去Alpha闸英,提前和背景色合成為不含Alpha的圖片
3.UIImageview 避免使用半透明
UIImageview的半透明取決于一下幾項(xiàng)
1.顯示的圖片
2.View的opaque屬性的值
3.View的alpha值
4.View的背景色
當(dāng)Opaque屬性為YES的時(shí)候,imageView的alpha屬性會(huì)被忽略介袜,圖層是否半透明取決于圖片和imageView本身的背景色的疊加結(jié)果甫何。
如果疊加結(jié)果圖全部不透明,則圖層不透明遇伞,不會(huì)觸發(fā)blend操作辙喂。
如果疊加結(jié)果中出現(xiàn)半透明區(qū)域,則整個(gè)圖層都會(huì)變成不透明鸠珠,會(huì)觸發(fā)blend操作巍耗。
如果Opaque屬性為NO的時(shí)候,圖層是否半透明取決于圖片和imageView的multiplied疊加結(jié)果確定渐排。
簡(jiǎn)單理解炬太,如果可能盡量:
設(shè)置Opaque為YES(其實(shí)默認(rèn)就是YES)
背景色設(shè)置為不含alpha的顏色
alpha值最好也是1(不透明)
適用場(chǎng)景:
通用優(yōu)化規(guī)則,不會(huì)造成副作用
Color Hits Green and Misses Red
能夠使用緩存的光柵化標(biāo)為綠色驯耻。
這個(gè)選項(xiàng)主要是檢測(cè)我們有無(wú)濫用或正確使用layer的shouldRasterize屬性.成功被緩存的layer會(huì)標(biāo)注為綠色,沒有成功緩存的會(huì)標(biāo)注為紅色亲族。
在測(cè)試的過(guò)程中,第一次加載時(shí),開啟光柵化的layer會(huì)顯示為紅色,這是很正常的,因?yàn)檫€沒有緩存成功。但是如果在接下來(lái)的測(cè)試,例如我們來(lái)回滾動(dòng)TableView時(shí),我們?nèi)匀话l(fā)現(xiàn)有許多紅色區(qū)域,那就需要謹(jǐn)慎對(duì)待了吓歇。因?yàn)橄裎覀兦懊嬗懻撨^(guò)的,這會(huì)引起offscreen rendering孽水。
檢查一下是否有濫用該屬性,因?yàn)橄到y(tǒng)規(guī)定的緩存大小是屏幕大小的2.5倍,如果使用過(guò)度,超出了緩存大小,會(huì)引起offscreen rendering。檢測(cè)layer是否內(nèi)容不斷更新,內(nèi)容的更新會(huì)導(dǎo)致緩存失效和大量的offscreen rendering.
Color copied images
這個(gè)選項(xiàng)主要檢查我們有無(wú)使用不正確圖片格式,若是GPU不支持的色彩格式的圖片則會(huì)標(biāo)記為青色,則只能由CPU來(lái)進(jìn)行處理城看。我們不希望在滾動(dòng)視圖的時(shí)候,CPU實(shí)時(shí)來(lái)進(jìn)行處理,因?yàn)橛锌赡軙?huì)阻塞主線程女气。
Color misaligned images
這個(gè)選項(xiàng)檢查了圖片是否被放縮,像素是否對(duì)齊。被放縮的圖片會(huì)被標(biāo)記為黃色,像素不對(duì)齊則會(huì)標(biāo)注為紫色测柠。
Color offscreen-rendered yellow
這個(gè)選項(xiàng)將需要offscreen渲染的的layer標(biāo)記為黃色炼鞠。
NavigationBar和ToolBar被標(biāo)記為黃色。因?yàn)樗鼈冃枰:澈蟮膬?nèi)容,這需要offscreen渲染轰胁。但是這是我們需要的谒主。而圖片也是被標(biāo)記為黃色,那是因?yàn)殛幱暗木壒省N仪懊嬉呀?jīng)提到了這一點(diǎn),如果此時(shí)我們用shadowPath來(lái)替代的話,就能夠避免offscreen渲染帶來(lái)的巨大開銷赃阀。
Color OpenGL fast path blue
這個(gè)選項(xiàng)勾選后,由OpenGL compositor進(jìn)行繪制的圖層會(huì)標(biāo)記為藍(lán)色霎肯。這是一個(gè)好的結(jié)果。
Flash updated regions
會(huì)標(biāo)記屏幕上被快速更新的部分為黃色,我們希望只是更新的部分被標(biāo)記完黃色榛斯。