iOS性能檢測之Instrunments - 幾種常用工具簡單介紹


Instrunments:

 沒錯,就是這貨,很多人平時開發可能不一定會用到這個,但我要說的是,學會使用它,會讓你加分不少哦

 

先來一張一覽圖:

 

 

1、打開方式

或者

兩種方式都行。

 

2、今天主要介紹一下我常用的3種:Core Animation 、Leaks、Time Profiler

 

打開方式:

雙擊圖標,會進入到各自界面,然后我們就可以進行下面的工作。 

此外,下面的測試都建議使用真機測試,模擬器會非常不准。其實,上面的工具,很多都適合用真機測試,除了Zombies等少數幾個適合用模擬器測試。

 

第一個:Core Animation(核心動畫) 

Core Animation工具是用來檢測Core Animation性能的,不過我可能比較low,我主要用來看fps(一秒鍾渲染多少幀 Frame Per Second = FPS),也就是滑動時查看界面是否卡頓。

一般FPS是60左右,過於低的話需要進行優化,當低於45時,用戶一般是可以覺察到卡頓的,當低於20時,卡頓是特別明顯,甚至影響使用了(之前測試過個位數fps,那感覺想讓我摔手機)。

舉例如圖:

當停止不動時,fps為0.開始滑動時,fps會不斷變化。

 

PS:這里測試界面卡頓,還有另一種更便捷的方法,借助第三方封裝的一個label,可以在界面實時看到fps,而不需要借助Instruments。

下載地址:Github地址

 

第二個:Leaks(內存泄露)

這個也比較常用,用來查看app運行期間,那些代碼產生內存泄露。

內存泄露 memory leak,是指程序在申請內存后,無法釋放已申請的內存空間,一次內存泄露危害可以忽略,但內存泄露堆積后果很嚴重,無論多少內存,遲早會被占光。

 

PS:如果找不到,可能移到底部區域了,如下圖:(xcode新版本會這樣布局)

 

 

其中,綠色勾表示運行正常,沒有內存泄露,如果有泄露,會自動顯示❌,下面我找一張有泄露的圖

按照我上面的方式設置完,點擊❌,會定位到代碼處,我們就能看到具體大概到代碼位置了,然后對應去修改。

PS:這里我講一點可能很多人沒注意到一個點,就是關於AFNetworking3.0下存在的內存泄露。

如果你在每次使用時,都是重新

AFHttpSessionManager *sessionManager = [AFHttpSessionManager manager];

可能就會有這種問題,不管你是直接使用,還是封裝后使用,只要用的時候是每次都申請一下sessionManager,就會有這種問題。

解決辦法就是:對sessionManager進行單例處理,就可以避免。

參考文章戳這里:

AFNetworking3.x容易出現內存泄露的地方

利用Instruments中的Leaks處理內存泄露

 

第三個:Time Profiler(時間分析器)

用來檢測app中每個方法所用的時間,並且可以排序,並查找出哪些函數占用了大量時間。

頁面如下:

我測試等demo內容比較少,所以數據不多,測試的時候,勾選右邊紅框 

Separate by Thread:每個線程被單獨考慮。這能讓你知道哪一個線程占用CPU最多。

Invert Call Tree:選中該選項后,調用棧會自上至下顯示。這通常是你需要的,因為你想知道CPU花費時間的那個最深的方法。

Hide System Libraries:選中該選項后,只有你自己app中出現的符號會被顯示出來。

然后就可以分析代碼各階段或者具體代碼分別執行多長時間了。

 

其實其他的工具都有各自的使用場景,這里我只是簡單介紹了幾種比較常用的,大家有興趣可以深入了解一下Instruments的使用場景。。。。

 

Enjoy~~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM