xcode5 引入了調試儀表,經過儀表能夠直觀的看出應用的CPU和內存佔用量。運行一個程序,點擊儀表欄。能夠發現當程序處於運行狀態時,調試導航面板會以柱狀圖顯示CPU和內存佔用量,並隨着應用實時更新佔用量數據。須要注意的是,調試導航面板中的數據是根據應用的硬件計算出來的,蘋果電腦的CPU比iOS設備更快,若是在iOS模擬器上運行應用,調試導航面板中顯示的CPU贊用量可能很是低,不低於分析性能問題。git
點擊CPU能夠在編輯區域打開CPU佔用量報告。github
根據運行應用設備的CPU核心數顯示CPU佔用比。例如,單核設備中最大CPU佔用量是100%,而對雙核設備中是200%,因此應用在單核設備中的CPU佔用量一般比雙核設備更高。若是應用處於空閒狀態(進入後臺活沒有操做),CPU佔用量會顯示0%。xcode
使用環比圖比較應用與系統中其餘進程(Process)的CPU佔用百分比。若是應用的CPU佔用百分環比不高,可是運行不通暢,那麼能夠從該環形圖中查看Other Processes的佔用百分比。若是設備中後臺運行的其餘應用太多 ,就可能致使Other Processes的佔用百分比很高,應用運行速度變慢。網絡
使用折線圖顯示應用CPU佔用量隨運行時間變化的過程,以及佔用量在運行時間內的峯值和谷值。函數
顯示應用中每個線程的時間-佔用比。工具
接下來咱們打開咱們應用 JXTouchTracker ,用手指在應用中繪製線條,手指不要離開屏幕,持續繪製大量線條能夠發現應用的CPU佔用比迅速升高-手指在屏幕上移動時,JXDrawView會不斷收到 touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event 消息並調用 drawRect:(CGRect)rect 重繪本身。繪製的線條越多, drawRect:(CGRect)rect 的工做量就越大,CPU佔用比就越高。性能
回到吊事導航面板,點擊Memory,打開內存佔用量報告,如圖:spa
和CPU佔用量報告相似,內存佔用量報告直接的顯示了應用內存佔用的狀況,可是Memery部分(位於最下方)顯示的折線圖可能會讓咱們誤解:應用彷佛始終佔用了100%的內存。實際上,途中將運行時間內的佔用峯值做爲100%顯示,所以途中y周的最大值與左側High欄中顯示的數值相同都是58.2MB。線程
不管開發何種類型的應用,都應該儘量下降CPU和內存佔用量,提升應用的流暢度和用戶體驗。調試
從儀表和佔用量報告中能夠簡要分析出應用的性能,可是,若是應用的CPU和內存佔用量太高,須要從代碼中查找性能問題,則可使用 Instruments ,他提供了比儀表和佔用量報告更詳細的數據分析。
Instruments 是一中與Xcode緊密集成的調試工具,能夠實時監控並統計應用運行時的各項數據,生成詳細的分析報告。它由若干組件組成,這些組件檢查的事項包括:應用建立了那些對象,每個方法和函數的CPU佔用量、文件I/O和網絡I/O等。經過使用這些不一樣的組件,能夠找出程序中的性能瓶頸,發現代碼中的問題。
Allocations 組件能夠列出應用建立過的所有對此昂,以及這些對象所佔用的內存大小。
當監視某個應用時, Allocations 組件會對這個應用進行性能分析。雖然能夠在模擬器上對某個應用進行性能分析,可是在真是的設備上進行能夠獲得更精確的數據。
要對當前打開的項目執行性能分析,能夠按住位於坐上角的 Run 按鈕不放,而後在新出現的彈出窗口中選擇 Profile 。
Xcode會啓動 Instruments 。 Instruments 會顯示一個下拉窗口並列出全部可用的組件。選中 Allocations 。以後 Instruments 會啓動應用並打開 Instruments 的主窗口。
Allocations 組件會顯示一張表格,流出應用 執行過的全部內存分配。由於數據比較多,因此先過濾,只列出由咱們本身編寫的代碼建立的對象。首先在JXDrawView對象上畫若干線條。而後在窗口 Category 查詢框中輸入 JXLine 。
Allocations 組件會過濾 Object Summary 表格所顯示的條目,只列出和 JXLine 右端的內存分配,即咱們本身建立的 JXLine 對象。
#Persistent 列會顯示某種對象的現存個數。 Persistent Bytes 列會顯示這些現存對象佔用了多少內存。 # Total 列會顯示應用運行至今共建立了多少個某種類型的對象(其中包括已經釋放的對象)。