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工作流程圖:
打開(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主界面圖:
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