iOS性能優(yōu)化:Instruments使用實(shí)戰(zhàn)

參考了chenkai 的簡(jiǎn)書(shū)

本文總結(jié)了包括Time Profiler、leaks檐涝、Allocation本人認(rèn)為前兩者使用較多异逐,最后的可僅供參考

Time Profiler的使用

作用:

應(yīng)用程序開(kāi)始運(yùn)行后.就能獲取到整個(gè)應(yīng)用程序運(yùn)行消耗時(shí)間分布和百分比.

使用Time Profiler的注意事項(xiàng):

必須使用真機(jī)飒焦,因?yàn)閙acbook上的cpu優(yōu)于iPhone典奉;gpu劣于ipone;

time? profiler使用步驟

在xcode選擇 product--profile得到圖一界面,鐘表為

time profiler

圖一

點(diǎn)擊開(kāi)始錄制按鈕得到如圖二:


圖二

可以看出圖中包含有調(diào)用系統(tǒng)API所消耗的時(shí)間鳞芙,這些數(shù)據(jù)對(duì)我們來(lái)說(shuō)是無(wú)用的眷柔,因此我們選擇屏蔽它

選用call tree的Separate Thread和Hide System Libraries得如圖三


圖三

可以看出剔除了反向調(diào)用樹(shù)和系統(tǒng)API調(diào)用的數(shù)據(jù)。此時(shí)點(diǎn)擊圖中所示方法原朝,可直接跳轉(zhuǎn)至指定代碼驯嘱,對(duì)耗時(shí)的代碼進(jìn)行優(yōu)化,一般耗時(shí)場(chǎng)景主要為UIImageView播放動(dòng)畫(huà)喳坠、NSDateFormatter以及NSCalendar的使用等場(chǎng)景鞠评。

相關(guān)名詞注釋?zhuān)?/p>

Separate By Thread:線(xiàn)程分離,只有這樣才能在調(diào)用路徑中能夠清晰看到占用CPU最大的線(xiàn)程.

Invert Call Tree:從上到下跟蹤堆棧信息.這個(gè)選項(xiàng)可以快捷的看到方法調(diào)用路徑最深方法占用CPU耗時(shí),比如FuncA{FunB{FunC}},勾選后堆棧以C->B->A把調(diào)用層級(jí)最深的C顯示最外面.

Hide Missing Symbols:如果dSYM無(wú)法找到你的APP或者調(diào)用系統(tǒng)框架的話(huà),那么表中將看到調(diào)用方法名只能看到16進(jìn)制的數(shù)值,勾選這個(gè)選項(xiàng)則可以隱藏這些符號(hào)壕鹉,便于簡(jiǎn)化分析數(shù)據(jù).

Hide System Libraries:這個(gè)就更有用了,勾選后耗時(shí)調(diào)用路徑只會(huì)顯示app耗時(shí)的代碼,性能分析普遍我們都比較關(guān)系自己代碼的耗時(shí)而不是系統(tǒng)的.基本是必選項(xiàng).注意有些代碼耗時(shí)也會(huì)納入系統(tǒng)層級(jí)谢澈,可以進(jìn)行勾選前后前后對(duì)執(zhí)行路徑進(jìn)行比對(duì)會(huì)非常有用.

至此,timer Profiler的使用總結(jié)結(jié)束御板。

leaks 的使用

打開(kāi)步驟同profiler相同,不再贅述牛郑。

打開(kāi)后第一部將彈出的界面的statistics改為call trees,如圖四


圖四

不同于time profiler 此時(shí)選Invert Call TreeHide System Libraries

然后點(diǎn)開(kāi)錄制按鈕

出現(xiàn)紅色錯(cuò)號(hào)就說(shuō)明出現(xiàn)了內(nèi)存泄露怠肋,選則左上角的暫停代碼,并用鼠標(biāo)點(diǎn)擊錯(cuò)號(hào)得如圖五淹朋,


圖五

點(diǎn)擊任意一行得到如圖六


圖六

標(biāo)紅處為內(nèi)存泄露的具體代碼笙各,可對(duì)其修改解決

Allocation

參考自IOS性能調(diào)優(yōu)系列:使用Allocation動(dòng)態(tài)分析內(nèi)存使用情況-愛(ài)編程?

Allocation工具可以用來(lái)幫你了解內(nèi)存的分配情況

打開(kāi)方式同上,略過(guò)础芍,直接上實(shí)料

打開(kāi)后我們可以看到右側(cè)(圖七)幾個(gè)比較有用的選項(xiàng)

All Objects Created

Created & Still Living

Created & Destroyed

圖七

通過(guò)以上方法可以對(duì)應(yīng)用的整體內(nèi)存使用情況有所了解杈抢,但內(nèi)存不合理使用導(dǎo)致的內(nèi)存警告往往是部分代碼或視圖導(dǎo)致的,我們往往要關(guān)注于某段時(shí)間或操作過(guò)程中內(nèi)存的分配和使用情況仑性,Allocation提供了這種功能惶楼。

比如在進(jìn)入一個(gè)視圖前或操作前,我們?cè)贏llocation面板左側(cè)點(diǎn)擊Mark Generation诊杆,這時(shí)候會(huì)產(chǎn)生Generation A節(jié)點(diǎn)歼捐,顯示內(nèi)存當(dāng)前的情況:

圖8
我們可以在進(jìn)入視圖后再點(diǎn)一次Mark Generation,在視圖退出后再點(diǎn)一次Mark晨汹,這樣三次產(chǎn)生的

Generation分別記錄了進(jìn)入前豹储、進(jìn)入后、關(guān)閉后淘这,再最后一個(gè)Generation應(yīng)該內(nèi)存被合理釋放剥扣,否則就代表了在這個(gè)視圖或操作中有泄漏或不合理的地方巩剖。

以上只是Allocation的基本運(yùn)用,設(shè)計(jì)出一套使用Allocation來(lái)合理測(cè)試的方案是比較復(fù)雜的钠怯,后續(xù)慢慢介紹佳魔。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市呻疹,隨后出現(xiàn)的幾起案子吃引,更是在濱河造成了極大的恐慌,老刑警劉巖刽锤,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件镊尺,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡并思,警方通過(guò)查閱死者的電腦和手機(jī)庐氮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)宋彼,“玉大人弄砍,你說(shuō)我怎么就攤上這事∈涮椋” “怎么了音婶?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)莱坎。 經(jīng)常有香客問(wèn)我衣式,道長(zhǎng),這世上最難降的妖魔是什么檐什? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任碴卧,我火速辦了婚禮,結(jié)果婚禮上乃正,老公的妹妹穿的比我還像新娘住册。我一直安慰自己,他們只是感情好瓮具,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布荧飞。 她就那樣靜靜地躺著,像睡著了一般搭综。 火紅的嫁衣襯著肌膚如雪垢箕。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,631評(píng)論 1 305
  • 那天兑巾,我揣著相機(jī)與錄音条获,去河邊找鬼。 笑死蒋歌,一個(gè)胖子當(dāng)著我的面吹牛帅掘,可吹牛的內(nèi)容都是我干的委煤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼修档,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼碧绞!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起吱窝,我...
    開(kāi)封第一講書(shū)人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤讥邻,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后院峡,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體兴使,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年照激,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了发魄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡俩垃,死狀恐怖励幼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情口柳,我是刑警寧澤苹粟,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站跃闹,受9級(jí)特大地震影響六水,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜辣卒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望睛榄。 院中可真熱鬧荣茫,春花似錦、人聲如沸场靴。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)旨剥。三九已至咧欣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間轨帜,已是汗流浹背魄咕。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蚌父,地道東北人哮兰。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓毛萌,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親喝滞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子阁将,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

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