你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS instruments介紹

iOS instruments介紹

編輯:IOS開發綜合

iOS instruments介紹

寫代碼的時候,我們時常需要借助一些工具來幫我們分析問題、找到問題,來達到調適和優化代碼的目的。在iOS開發方面,XCode提供了一系列工具來幫助我們解決問題,這就是instruments。

蘋果文檔這麼介紹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,和其中幾個常用的工具。

界面介紹

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

打開instruments方法:<喎?/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPjwvcD4NCjxwPs2ouf1YY29kZbLLtaW08r+qaW5zdHJ1bWVudHM6PC9wPg0KQ2hvb3NlIFhjb2RlICZndDsgT3BlbiBEZXZlbG9wZXIgVG9vbCAmZ3Q7IEluc3RydW1lbnRzDQo8cD7NqLn9WGNvZGUgcHJvamVjdLTyv6ppbnN0cnVtZW50czo8L3A+DQpDaG9vc2UgUHJvZHVjdCAmZ3Q7IFByb2ZpbGUgQ2xpY2sgYW5kIGhvbGQgdGhlIFJ1biBidXR0b24gaW4gdGhlIFhjb2RlIHRvb2xiYXIgYW5kIGNob29zZSBQcm9maWxlLiBQcmVzcyBDb21tYW5kLUkNCjxwPjxzdHJvbmc+aW5zdHJ1bWVudHPW973nw+bNvKO6PC9zdHJvbmc+PGJyIC8+DQo8aW1nIGFsdD0="instruents主界面圖" src="/uploadfile/Collfiles/20160414/20160414091023472.png" title="\" />

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需要注意的一點是,必須是真機調試。
\
其中調試最主要的以下幾個選項:

以下參考參考鏈接2:

比較重要的:

“Color Blended Layers”:圖層混合

顯示出被混合的圖層Blended Layer(用紅色標注),Blended Layer是因為這些Layer是透明的(Transparent),系統在渲染這些view時需要將該view和下層view混合(Blend)後才能計算出該像素點的實際顏色。所以紅色越少越好

“Color Hits Green and Misses Red”:圖層緩存

很多視圖Layer由於Shadow、Mask和Gradient等原因渲染很高,因此UIKit提供了API用於緩存這些Layer:[layer setShouldRasterize:YES],系統會將這些Layer緩存成Bitmap位圖供渲染使用,如果失效時便丟棄這些Bitmap重新生成。所以綠色越多,紅色越少越好

“Color Offscreen-Rendered Yellow”:離屏渲染

Offscreen-Rendering離屏渲染意思是iOS要顯示一個視圖時,需要先在後台用CPU計算出視圖的Bitmap,再交給GPU做Onscreen-Rendering顯示在屏幕上,因為顯示一個視圖需要兩次計算,所以這種Offscreen-Rendering會導致app的圖形性能下降。所以黃色越少越好。

次要的:

“Color Misaligned Images”:圖片縮放

Misaligned Image表示要繪制的點無法直接映射到頻幕上的像素點,此時系統需要對相鄰的像素點做anti-aliasing反鋸齒計算,增加了圖形負擔,通常這種問題出在對某些View的Frame重新計算和設置時產生的。

“Color Copied images”:標注應用繪制時被Core Animation復制的圖片 “Color Immediately”:Instruments在做color-flush操作時取消10毫秒的延時 “Color Compositing Fast-Path Blue”:標記由硬件繪制的路徑 “Flash Updated Regions”:重繪的區域

對圖形性能的分析意義較小,通常僅作為參考。

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.

\

對於Call Tree的設置參數解釋:

以下參考參考鏈接4:

Separate by Thread: 每個線程應該分開考慮。只有這樣你才能揪出那些大量占用CPU的”重”線程 Invert Call Tree: 從上倒下跟蹤堆棧,這意味著你看到的表中的方法,將已從第0幀開始取樣,這通常你是想要的,只有這樣你才能看到CPU中話費時間最深的方法.也就是說FuncA{FunB{FunC}} 勾選此項後堆棧以C->B-A 把調用層級最深的C顯示在最外面 Hide Missing Symbols: 如果dSYM無法找到你的app或者系統框架的話,那麼表中看不到方法名只能看到十六進制的數值,如果勾線此項可以隱藏這些符號,便於簡化數據 Hide System Libraries: 勾選此項你會顯示你app的代碼,這是非常有用的. 因為通常你只關心cpu花在自己代碼上的時間不是系統上的 Show Obj-C Only: 只顯示oc代碼 ,如果你的程序是像OpenGl這樣的程序,不要勾選側向因為他有可能是C++的 Flatten Recursion: 遞歸函數, 每個堆棧跟蹤一個條目

其中可以看到每一個方法的調用時間

雙擊相應方法,可以看到整個的運行時間:

Leaks

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

\

Leaks那行出現的紅色標簽代表著有內存洩漏。
先在左上角暫停一下程序運行,切換詳情的Leaks到Call Tree,
並且在設置界面勾選上”invert Call Tree”和”Hide System Libraries”,就可以在看到相應的調用函數:

雙擊相關函數,就可以跳轉到對應出問題的代碼,進行修改:

 
   
  1. 上一頁:
  2. 下一頁:
Copyright © Ios教程網 All Rights Reserved