iOS instruments介紹

iOS instruments介紹

本文csdn地址:http://blog.csdn.net/game3108/article/details/51147909
寫(xiě)代碼的時(shí)候贱枣,我們時(shí)常需要借助一些工具來(lái)幫我們分析問(wèn)題、找到問(wèn)題魏滚,來(lái)達(dá)到調(diào)適和優(yōu)化代碼的目的样傍。在iOS開(kāi)發(fā)方面捂贿,XCode提供了一系列工具來(lái)幫助我們解決問(wèn)題渤弛,這就是instruments。

蘋(píng)果文檔這么介紹instruments:

Instruments is a powerful and flexible performance-analysis and testing tool that’s part of the Xcode tool set. It’s designed to help you profile your OS X and iOS apps, processes, and devices in order to better understand and optimize their behavior and performance. Incorporating Instruments into your workflow from the beginning of the app development process can save you time later by helping you find issues early in the development cycle.

本文主要介紹一下instruments滤愕,和其中幾個(gè)常用的工具温算。

界面介紹

instruments工作流程圖:

instruments工作流程圖
instruments工作流程圖

打開(kāi)instruments方法:

通過(guò)Xcode菜單打開(kāi)instruments:

  • Choose Xcode > Open Developer Tool > Instruments

通過(guò)Xcode project打開(kāi)instruments:

  • Choose Product > Profile
  • Click and hold the Run button in the Xcode toolbar and choose Profile.
  • Press Command-I

instruments主界面圖:

instruents主界面圖
instruents主界面圖

Core Animation

The Core Animation instrument captures information on selected animation statistics. It can record information from a single process or from all processes running on the system.

Core Animation需要注意的一點(diǎn)是,必須是真機(jī)調(diào)試间影。



其中調(diào)試最主要的以下幾個(gè)選項(xiàng):

以下參考參考鏈接2:

比較重要的:

  • "Color Blended Layers":圖層混合

顯示出被混合的圖層Blended Layer(用紅色標(biāo)注)注竿,Blended Layer是因?yàn)檫@些Layer是透明的(Transparent),系統(tǒng)在渲染這些view時(shí)需要將該view和下層view混合(Blend)后才能計(jì)算出該像素點(diǎn)的實(shí)際顏色魂贬。所以紅色越少越好

  • "Color Hits Green and Misses Red":圖層緩存

很多視圖Layer由于Shadow巩割、Mask和Gradient等原因渲染很高,因此UIKit提供了API用于緩存這些Layer:[layer setShouldRasterize:YES]付燥,系統(tǒng)會(huì)將這些Layer緩存成Bitmap位圖供渲染使用宣谈,如果失效時(shí)便丟棄這些Bitmap重新生成。所以綠色越多机蔗,紅色越少越好

  • "Color Offscreen-Rendered Yellow":離屏渲染

Offscreen-Rendering離屏渲染意思是iOS要顯示一個(gè)視圖時(shí)蒲祈,需要先在后臺(tái)用CPU計(jì)算出視圖的Bitmap,再交給GPU做Onscreen-Rendering顯示在屏幕上萝嘁,因?yàn)轱@示一個(gè)視圖需要兩次計(jì)算梆掸,所以這種Offscreen-Rendering會(huì)導(dǎo)致app的圖形性能下降。所以黃色越少越好牙言。

次要的:

  • "Color Misaligned Images":圖片縮放

Misaligned Image表示要繪制的點(diǎn)無(wú)法直接映射到頻幕上的像素點(diǎn)酸钦,此時(shí)系統(tǒng)需要對(duì)相鄰的像素點(diǎn)做anti-aliasing反鋸齒計(jì)算,增加了圖形負(fù)擔(dān)咱枉,通常這種問(wèn)題出在對(duì)某些View的Frame重新計(jì)算和設(shè)置時(shí)產(chǎn)生的卑硫。

  • "Color Copied images":標(biāo)注應(yīng)用繪制時(shí)被Core Animation復(fù)制的圖片
  • "Color Immediately":Instruments在做color-flush操作時(shí)取消10毫秒的延時(shí)
  • "Color Compositing Fast-Path Blue":標(biāo)記由硬件繪制的路徑
  • "Flash Updated Regions":重繪的區(qū)域

對(duì)圖形性能的分析意義較小,通常僅作為參考蚕断。

Timer Profiler

The Time Profiler instrument captures stack trace information at prescribed intervals. It can record information from a single process or from all processes running on the system.

對(duì)于Call Tree的設(shè)置參數(shù)解釋?zhuān)?/p>

以下參考參考鏈接4:

  • Separate by Thread: 每個(gè)線(xiàn)程應(yīng)該分開(kāi)考慮欢伏。只有這樣你才能揪出那些大量占用CPU的"重"線(xiàn)程
  • Invert Call Tree: 從上倒下跟蹤堆棧,這意味著你看到的表中的方法,將已從第0幀開(kāi)始取樣,這通常你是想要的,只有這樣你才能看到CPU中話(huà)費(fèi)時(shí)間最深的方法.也就是說(shuō)FuncA{FunB{FunC}} 勾選此項(xiàng)后堆棧以C->B-A 把調(diào)用層級(jí)最深的C顯示在最外面
  • Hide Missing Symbols: 如果dSYM無(wú)法找到你的app或者系統(tǒng)框架的話(huà),那么表中看不到方法名只能看到十六進(jìn)制的數(shù)值,如果勾線(xiàn)此項(xiàng)可以隱藏這些符號(hào),便于簡(jiǎn)化數(shù)據(jù)
  • Hide System Libraries: 勾選此項(xiàng)你會(huì)顯示你app的代碼,這是非常有用的. 因?yàn)橥ǔD阒魂P(guān)心cpu花在自己代碼上的時(shí)間不是系統(tǒng)上的
  • Show Obj-C Only: 只顯示oc代碼 ,如果你的程序是像OpenGl這樣的程序,不要勾選側(cè)向因?yàn)樗锌赡苁荂++的
  • Flatten Recursion: 遞歸函數(shù), 每個(gè)堆棧跟蹤一個(gè)條目

其中可以看到每一個(gè)方法的調(diào)用時(shí)間

雙擊相應(yīng)方法,可以看到整個(gè)的運(yùn)行時(shí)間:


Leaks

The Leaks instrument captures information about leaked memory. It can record information from a single process only.

Leaks那行出現(xiàn)的紅色標(biāo)簽代表著有內(nèi)存泄漏亿乳。
先在左上角暫停一下程序運(yùn)行硝拧,切換詳情的Leaks到Call Tree,
并且在設(shè)置界面勾選上"invert Call Tree"和"Hide System Libraries",就可以在看到相應(yīng)的調(diào)用函數(shù):

雙擊相關(guān)函數(shù)葛假,就可以跳轉(zhuǎn)到對(duì)應(yīng)出問(wèn)題的代碼障陶,進(jìn)行修改:

參考鏈接

1.iOS developer library: Instruments User Guide
2.iOS App的性能關(guān)注點(diǎn):iOS App的性能關(guān)注點(diǎn)
3.Designing for iOS: Graphics & Performance:Designing for iOS: Graphics & Performance
4.iOS系類(lèi)教程之用instruments來(lái)檢驗(yàn)?zāi)愕腶pp:iOS系類(lèi)教程之用instruments來(lái)檢驗(yàn)?zāi)愕腶pp
5.Instruments Tutorial with Swift: Getting Started:Instruments Tutorial with Swift: Getting Started

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市聊训,隨后出現(xiàn)的幾起案子抱究,更是在濱河造成了極大的恐慌,老刑警劉巖带斑,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鼓寺,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡勋磕,警方通過(guò)查閱死者的電腦和手機(jī)侄刽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)朋凉,“玉大人州丹,你說(shuō)我怎么就攤上這事≡优恚” “怎么了墓毒?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)亲怠。 經(jīng)常有香客問(wèn)我所计,道長(zhǎng),這世上最難降的妖魔是什么团秽? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任主胧,我火速辦了婚禮叭首,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘踪栋。我一直安慰自己焙格,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布夷都。 她就那樣靜靜地躺著眷唉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪囤官。 梳的紋絲不亂的頭發(fā)上冬阳,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音党饮,去河邊找鬼肝陪。 笑死,一個(gè)胖子當(dāng)著我的面吹牛刑顺,可吹牛的內(nèi)容都是我干的见坑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼捏检,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼荞驴!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起贯城,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤熊楼,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后能犯,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體鲫骗,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年踩晶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了执泰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡渡蜻,死狀恐怖术吝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情茸苇,我是刑警寧澤排苍,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站学密,受9級(jí)特大地震影響淘衙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜腻暮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一彤守、第九天 我趴在偏房一處隱蔽的房頂上張望毯侦。 院中可真熱鬧,春花似錦具垫、人聲如沸侈离。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)霍狰。三九已至抡草,卻和暖如春饰及,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背康震。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工燎含, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人腿短。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓屏箍,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親橘忱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子赴魁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

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

  • 第二章 第二節(jié) 第二段 曾經(jīng)有人對(duì)我說(shuō)過(guò),人這一生所經(jīng)歷的事情大多不能兩全钝诚,二者之間必然需要狠下心來(lái)作出選擇颖御,...
    雨象閱讀 339評(píng)論 0 0
  • 現(xiàn)在用的這個(gè)iphone6是結(jié)婚后第一個(gè)生日黃桃爹地送的,剛好有換手機(jī)需求凝颇,我們互相送禮物都是屬于實(shí)用派的潘拱。 用到...
    李小月_lixiaoyue閱讀 190評(píng)論 0 1
  • 元宵將至,年總是要過(guò)完的拧略,返城的人群已陸續(xù)回到不是故鄉(xiāng)的那個(gè)家芦岂。春運(yùn),到元宵后垫蛆,大概也算告一段落了禽最,交通便利的今天...
    墨語(yǔ)花開(kāi)時(shí)閱讀 814評(píng)論 4 3
  • 昨日的疲憊還沒(méi)緩過(guò)來(lái) 今天又要再次奔忙 坐在公交車(chē)上 除了一直后倒的房子和田野 還有微躁的風(fēng) 昏沉的大腦 充斥著手...
    墨沾醫(yī)衫閱讀 161評(píng)論 0 0
  • 來(lái)簡(jiǎn)書(shū)半個(gè)月了,卻不得不開(kāi)一個(gè)小號(hào)袱饭,大號(hào)名叫煽海鯨弛随,因?yàn)榇丝虄?nèi)心的迷茫,便取名茫鯨宁赤。我不知道我這么做對(duì)不對(duì)舀透,但愿...
    茫鯨閱讀 185評(píng)論 0 1