iOS instruments介紹

來源:互聯網
上載者:User

iOS instruments介紹
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方法:<喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPjwvcD4NCjxwPs2ouf1YY29kZbLLtaW08r+qaW5zdHJ1bWVudHM6PC9wPg0KQ2hvb3NlIFhjb2RlICZndDsgT3BlbiBEZXZlbG9wZXIgVG9vbCAmZ3Q7IEluc3RydW1lbnRzDQo8cD7NqLn9WGNvZGUgcHJvamVjdLTyv6ppbnN0cnVtZW50czo8L3A+DQpDaG9vc2UgUHJvZHVjdCAmZ3Q7IFByb2ZpbGUgQ2xpY2sgYW5kIGhvbGQgdGhlIFJ1biBidXR0b24gaW4gdGhlIFhjb2RlIHRvb2xiYXIgYW5kIGNob29zZSBQcm9maWxlLiBQcmVzcyBDb21tYW5kLUkNCjxwPjxzdHJvbmc+aW5zdHJ1bWVudHPW973nw+bNvKO6PC9zdHJvbmc+PGJyIC8+DQo8aW1nIGFsdD0="instruents主介面圖" src="http://www.bkjia.com/uploads/allimg/160415/041U53033-1.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”,就可以在看到相應的調用函數:

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

   

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.