隨便記吮播,關(guān)于iOS性能優(yōu)化

CoreAnimation用于測(cè)量應(yīng)用的圖形性能以及進(jìn)程的CPU使用率变屁。
用來(lái)監(jiān)測(cè)CoreAnimation性能。它提供了周期性的FPS意狠,并且考慮到了發(fā)生在程序之外的動(dòng)畫(huà)粟关。

FPS是指屏幕的刷新率,也就是每秒鐘顯示多少幀畫(huà)面环戈。iPhone推薦的刷新率是60Hz闷板,也就是說(shuō)在頁(yè)面執(zhí)行動(dòng)畫(huà)或者說(shuō)是滑動(dòng)的時(shí)候,每秒鐘顯示60幀的畫(huà)面院塞。頁(yè)面靜止的時(shí)候FPS值為0遮晚。FPS值的大小體現(xiàn)了頁(yè)面的流暢程度,當(dāng)FPS低于45的時(shí)候卡頓會(huì)比較明顯拦止。

注意:

(1)在使用CoreAnimation工具進(jìn)行測(cè)試的時(shí)候要使用真機(jī)來(lái)進(jìn)行測(cè)試县遣。如果選擇模擬器則會(huì)報(bào)錯(cuò)(Core Animation does not support the iOS Simulator platform)
(2)最好使用release模式

CoreAnimation調(diào)試界面

CoreAnimation常用的調(diào)試選項(xiàng)

  • Color Blended Layers(圖層混合)

很多情況下,我們的界面都是會(huì)出現(xiàn)多個(gè)UI控件疊加的情況汹族,如果上層的控件是透明的或者半透明的萧求,那么GPU就會(huì)去計(jì)算這些layer最終的顯示顏色,也就是我們正扯ヂ鳎看到的效果夸政。例如上層一個(gè)UIView的背景色是藍(lán)色半透明,下層有一個(gè)紅色的UIView搁拙,GPU就會(huì)自動(dòng)計(jì)算兩個(gè)UIView重疊區(qū)域的顏色秒梳。如果我們把上層的UIView設(shè)置為不透明法绵,那么就會(huì)直接顯示為藍(lán)色,不用計(jì)算重疊部分的顏色酪碘。

如果出現(xiàn)了圖層混合朋譬,打開(kāi)Color Blended Layers選項(xiàng),發(fā)生重疊的UIView會(huì)顯示為紅色兴垦,我們的目的是盡可能的減少紅色的區(qū)域徙赢。一般只要設(shè)置控件不透明即可,通常給控件一個(gè)不透明的背景色(例如白色)探越。

但是對(duì)于顯示的內(nèi)容有中文的Label狡赐,只設(shè)置背景色是不夠的,因?yàn)槿绻鹟abel的內(nèi)容有中文的話钦幔,label的實(shí)際渲染區(qū)域要大于label的size枕屉,最外層多了一個(gè)sublayer,需要加上label.layer.masksToBounds = YES鲤氢。

  • Color Hits Green and Misses Red(光柵化)

這個(gè)選項(xiàng)主要是檢測(cè)我們是否正確的使用了layer的shouldRasterize屬性搀擂,shouldRasterize = YES開(kāi)啟光柵化。光柵化是將一個(gè)layer預(yù)先渲染成位圖卷玉,再加入到緩存中哨颂,成功被緩存的layer會(huì)標(biāo)注為綠色,沒(méi)有成功緩存的會(huì)被標(biāo)注為紅色相种,正確的使用光柵化可以得到一定程度的性能提升威恼。

啟用shouldRasterize屬性會(huì)將圖層繪制到一個(gè)屏幕之外的圖像。然后這個(gè)圖像將會(huì)被緩存起來(lái)并繪制到實(shí)際圖層的contents和子圖層寝并。如果有很多的子圖層或者有復(fù)雜的效果應(yīng)用箫措,這樣做就會(huì)比重繪所有事務(wù)的所有幀劃得來(lái)得多。但是光柵化原始圖像需要時(shí)間食茎,而且還會(huì)消耗額外的內(nèi)存蒂破。因此光柵化僅適用于較復(fù)雜的、靜態(tài)的效果别渔。例如設(shè)置陰影等耗費(fèi)資源比較多的靜態(tài)內(nèi)容附迷。如果沒(méi)有特殊的需要,關(guān)閉光柵化也是一種優(yōu)化哎媚。

  • Color Misaligned Images(圖片的不正忱縮放)

這個(gè)選項(xiàng)可以幫助我們查看圖片大小是否正確顯示。如果image size和imageView size不匹配拨与,image會(huì)出現(xiàn)黃色稻据。要盡可能的減少黃色的出現(xiàn),因?yàn)閕mage size與imageView size不匹配,會(huì)消耗資源壓縮圖片捻悯。

  • Color Offscreen-Rendered Yellow(離屏渲染)

離屏渲染指的是GPU在當(dāng)前屏幕緩沖區(qū)以外新開(kāi)辟一個(gè)緩沖區(qū)進(jìn)行渲染操作匆赃。還有另外一種屏幕渲染方式-當(dāng)前屏幕渲染On-Screen Rendering ,指的是GPU的渲染操作是在當(dāng)前用于顯示的屏幕緩沖區(qū)中進(jìn)行今缚。 離屏渲染會(huì)先在屏幕外創(chuàng)建新緩沖區(qū)算柳,離屏渲染結(jié)束后,再?gòu)碾x屏切到當(dāng)前屏幕姓言, 把離屏的渲染結(jié)果顯示到當(dāng)前屏幕上瞬项,這個(gè)上下文切換的過(guò)程是非常消耗性能的,實(shí)際開(kāi)發(fā)中盡可能避免離屏渲染何荚。
能夠觸發(fā)離屏渲染的行為:
(1)設(shè)置圓角(當(dāng)和maskToBounds一起使用時(shí))
(2)設(shè)置陰影
(3)layer.shouldRasterize(光柵化)
(4)layer.mask
在出現(xiàn)離屏渲染的情況下囱淋,優(yōu)先考慮避免觸發(fā)離屏渲染,設(shè)置陰影可以通過(guò)指定shadowPath來(lái)避免離屏渲染餐塘。在無(wú)法取消離屏渲染的情況下有兩種方案進(jìn)行優(yōu)化:
(1)layer.shouldRasterize(光柵化)適用于靜態(tài)內(nèi)容的視圖妥衣,對(duì)上面的所有效果而言,在實(shí)現(xiàn)成本以及性能上是最均衡的戒傻。
(2)主動(dòng)規(guī)避離屏渲染(用其他不會(huì)產(chǎn)生離屏渲染的方法實(shí)現(xiàn)效果)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末称鳞,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子稠鼻,更是在濱河造成了極大的恐慌,老刑警劉巖狂票,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件候齿,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡闺属,警方通過(guò)查閱死者的電腦和手機(jī)慌盯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)掂器,“玉大人亚皂,你說(shuō)我怎么就攤上這事」停” “怎么了灭必?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)乃摹。 經(jīng)常有香客問(wèn)我禁漓,道長(zhǎng),這世上最難降的妖魔是什么孵睬? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任播歼,我火速辦了婚禮,結(jié)果婚禮上掰读,老公的妹妹穿的比我還像新娘秘狞。我一直安慰自己叭莫,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布烁试。 她就那樣靜靜地躺著雇初,像睡著了一般。 火紅的嫁衣襯著肌膚如雪廓潜。 梳的紋絲不亂的頭發(fā)上抵皱,一...
    開(kāi)封第一講書(shū)人閱讀 49,760評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音辩蛋,去河邊找鬼呻畸。 笑死,一個(gè)胖子當(dāng)著我的面吹牛悼院,可吹牛的內(nèi)容都是我干的伤为。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼据途,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼绞愚!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起颖医,我...
    開(kāi)封第一講書(shū)人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤位衩,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后熔萧,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體糖驴,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年佛致,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了贮缕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡俺榆,死狀恐怖感昼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情罐脊,我是刑警寧澤定嗓,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站萍桌,受9級(jí)特大地震影響蜕乡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜梗夸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一层玲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦辛块、人聲如沸畔派。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)线椰。三九已至,卻和暖如春尘盼,著一層夾襖步出監(jiān)牢的瞬間憨愉,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工卿捎, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留配紫,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓午阵,卻偏偏與公主長(zhǎng)得像躺孝,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子底桂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容