IOS性能優(yōu)化instrument-core Animation使用

1.首先新建項(xiàng)目-打開protect-profile



左側(cè) 數(shù)值代表的fpsfps:我們知道任何屏幕總是有一個(gè)刷新率盾饮,比如iphone推薦的刷新率是60Hz,也就是說GPU每秒鐘刷新屏幕60次丐谋,因此兩次刷新之間的間隔為16.67ms。這段時(shí)間內(nèi)屏幕內(nèi)容保持不變号俐,稱為一幀(frame)定庵,fps表示frames per second,也就是每秒鐘顯示多少幀畫面猪落。對于靜止不變的內(nèi)容,我們不需要考慮它的刷新率蓝仲,但在執(zhí)行動(dòng)畫或滑動(dòng)時(shí)官疲,fps的值直接反映出滑動(dòng)的流暢程度。

fps 為0時(shí)垢夹,表示屏幕未動(dòng)维费! 一般fps<30 就有明顯的卡頓 ,蘋果官方給的標(biāo)準(zhǔn)值為fps為60而晒!

一般影響fps的因素(掉幀):1.阻塞主線程阅畴,這就是官方為啥認(rèn)定刷新UI必須在主線程的原因

2.原因較多,但是大部分原因是在于離屏渲染诈胜,渲染耗損過高.

頂部的震動(dòng)條就是動(dòng)態(tài)圖冯事!

右側(cè):color blended layers 顏色混合層

color hits green and missed red綠色和紅色的顏色

flash update regionsFlash更新區(qū)

1、Color Blended Layers

(1)缓熟、圖層混合

首先我們要明白像素的概念够滑,屏幕上每一個(gè)點(diǎn)都是一個(gè)像素吕世,像素有R、G况毅、B三種顏色構(gòu)成(有時(shí)候還帶有alpha值)。如果某一塊區(qū)域上覆蓋了多個(gè)layer,最后的顯示效果受到這些layer的共同影響么鹤。舉個(gè)例子味廊,上層是藍(lán)色(RGB=0,0,1),透明度為50%,下層是紅色(RGB=1,0,0)余佛。那么最終的顯示效果是紫色(RGB=0.5,0,0.5)衙熔。這種顏色的混合(blending)需要消耗一定的GPU資源,因?yàn)閷?shí)際上可能不止只有兩層红氯。如果只想顯示最上層的藍(lán)色痢甘,可以把它的透明度設(shè)置為100%,這樣GPU會(huì)忽略下面所有的layer塞栅,從而節(jié)約了很多不必要的運(yùn)算放椰。

(2)、調(diào)試Color Blended Layers

第一個(gè)調(diào)試選項(xiàng)”Color Blended Layers”正是用于檢測哪里發(fā)生了圖層混合砾医,并用紅色標(biāo)記出來如蚜。因此我們需要盡可能減少看到的紅色區(qū)域。一旦發(fā)現(xiàn)應(yīng)該想法設(shè)法消除它错邦。開始調(diào)試后勾選這個(gè)選項(xiàng)撬呢,我們在手機(jī)上可以看到如下的場景:

2、Color Hits Green and Misses Red

(1)讨勤、光柵化

? ? ? ?光柵化是將一個(gè)layer預(yù)先渲染成位圖(bitmap)晨另,然后加入緩存中。如果對于陰影效果這樣比較消耗資源的靜態(tài)內(nèi)容進(jìn)行緩存刨晴,可以得到一定幅度的性能提升路翻。demo中的這一行代碼表示將label的layer光柵化:

label.layer.shouldRasterize = YES;

(2)、調(diào)試Color Hits Green and Misses Red

它表示如果命中緩存則顯示為綠色蝶桶,否則顯示為紅色掉冶,顯然綠色越多越好,紅色越少越好恢共。

注意:光柵化的核心在于緩存的思想璧亚。我們自己動(dòng)手把玩一下,可以發(fā)現(xiàn)以下幾個(gè)有意思的現(xiàn)象:

上下微小幅度滑動(dòng)時(shí)透硝,一直是綠色上下較大幅度滑動(dòng)疯搅,新出現(xiàn)的label一開始是紅色,隨后變成綠色如果靜止一秒鐘甜攀,剛開始滑動(dòng)時(shí)會(huì)變紅琐馆。

這是因?yàn)閘ayer進(jìn)行光柵化后渲染成位圖放在緩存中。當(dāng)屏幕出現(xiàn)滑動(dòng)時(shí)谁撼,我們直接從緩存中讀取而不必渲染,所以會(huì)看到綠色喊巍。當(dāng)新的label出現(xiàn)時(shí)箍鼓,緩存中沒有個(gè)這個(gè)label的位圖,所以會(huì)變成紅色何暮。第三點(diǎn)比較關(guān)鍵铐殃,緩存中的對象有效期只有100ms富腊,即如果在0.1s內(nèi)沒有被使用就會(huì)自動(dòng)從緩存中清理出去。這就是為什么停留一會(huì)兒再滑動(dòng)就會(huì)看到紅色赘被。

光柵化的緩存機(jī)制是一把雙刃劍帘腹,先寫入緩存再讀取有可能消耗較多的時(shí)間。因此光柵化僅適用于較復(fù)雜的阳欲、靜態(tài)的效果球化。通過Instrument的調(diào)試發(fā)現(xiàn),這里使用光柵化經(jīng)常出現(xiàn)未命中緩存的情況赴蝇,如果沒有特殊需要?jiǎng)t可以關(guān)閉光柵化巢掺,所以我們做的第二個(gè)優(yōu)化是注釋掉下面這行代碼

//? ? label.layer.shouldRasterize = true

3、Color Copied Images

(1)考余、顏色格式

像素在內(nèi)存中的布局和它在磁盤中的存儲(chǔ)方式并不相同轧苫。考慮一種簡單的情況:每個(gè)像素有R身冬、G、B和alpha四個(gè)值滚躯,每個(gè)值占用1字節(jié)樱哼,因此每個(gè)像素占用4字節(jié)的內(nèi)存空間搅幅。一張1920*1080的照片(iPhone6 Plus的分辨率)一共有2,073,600個(gè)像素呼胚,因此占用了超過8Mb的內(nèi)存。但是一張同樣分辨率的PNG格式或JPEG格式的圖片一般情況下不會(huì)有這么大沪编。這是因?yàn)镴PEG將像素?cái)?shù)據(jù)進(jìn)行了一種非常復(fù)雜且可逆的轉(zhuǎn)化年扩。

CPU主要處理兩件事:

(1)把圖片從PNG或JPEG等格式中解壓出來,得到像素?cái)?shù)據(jù)

(2)如果GPU不支持這種顏色各式相嵌,CPU需要進(jìn)行格式轉(zhuǎn)換

(2)况脆、調(diào)試Color Copied Images

第三個(gè)選項(xiàng)“Color Copied Images”就用來檢測這種實(shí)時(shí)的格式轉(zhuǎn)化格了,如果有則會(huì)將圖片標(biāo)記為藍(lán)色。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末弹惦,一起剝皮案震驚了整個(gè)濱河市悄但,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宵荒,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異暑刃,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)溜嗜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門炸宵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谷扣,“玉大人,你說我怎么就攤上這事裹匙∧┩海” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵练慕,是天一觀的道長贺待。 經(jīng)常有香客問我,道長秃臣,這世上最難降的妖魔是什么哪工? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任雁比,我火速辦了婚禮,結(jié)果婚禮上偎捎,老公的妹妹穿的比我還像新娘。我一直安慰自己寻拂,他們只是感情好祭钉,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著距境,像睡著了一般垮卓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伪货,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機(jī)與錄音蒙挑,去河邊找鬼忆蚀。 笑死,一個(gè)胖子當(dāng)著我的面吹牛馋袜,可吹牛的內(nèi)容都是我干的欣鳖。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼什荣,長吁一口氣:“原來是場噩夢啊……” “哼怀酷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起桅锄,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤友瘤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后锯茄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體茶没,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡抓半,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了廊移。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片探入。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蜂嗽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辱揭,到底是詐尸還是另有隱情病附,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布域庇,位于F島的核電站丽焊,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏写穴。R本人自食惡果不足惜雌贱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望馋没。 院中可真熱鬧,春花似錦勾怒、人聲如沸声旺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至澈缺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間莱预,已是汗流浹背雏吭。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工杖们, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人肩狂。 一個(gè)月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓摘完,卻偏偏與公主長得像,于是被迫代替她去往敵國和親傻谁。 傳聞我的和親對象是個(gè)殘疾皇子孝治,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

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