instruments 中 Time Profiler的使用說明

注意手機上要有運行過的app:
1、我們要先 command + shift +k ,clean下
2、運行下app,command + r
3、Xcode–> Product–> Profile (command + i 快捷鍵)調出instrument,選擇Time Profiler,我們可以跟蹤哪個方法最耗時間,以此來優化

這裏寫圖片描述

然後可以看到如下
這裏寫圖片描述

點擊左邊紅色的圓點,開始錄製,我們就能看到方法執行所需要的時間
這裏寫圖片描述

我們可以看到[GBLoopView animateCurrentTickerString];這個方法最耗時間。我們點擊有個向右的箭頭,看下該方法
這裏寫圖片描述

GBLoopView是幹嘛的呢,是在項目首頁有個廣播的跑馬燈,之前的代碼是在viewwilldisapper中將該廣播暫停,自己猜測,難道是即使暫停了,裏面還有些動畫還在執行?於是在animateCurrentTickerString中打斷點,果然即使已經push到其他頁面,該方法在不斷的循環調用,之前有個字斷是running 用來記錄當前狀態的,在主頁viewwilldisapper中將其暫停running=NO,在animateCurrentTickerString添加個判斷,這樣即使push到其他頁面,該方法也不會一直在調用了。但是我比較好奇的是即使我在主頁將該GBLoopView 暫停並且移除掉,該動畫還是一值在執行,不知道該原因是什麼~~

看下修改完之後的cpu的佔用率

這裏寫圖片描述

我的這個最耗時的已經修改好了,當然還有其他可以優化的。

注意:我們看下有下角的☑️選項,對於我們很有幫組

Separate by Thread:按線程分開做分析,這樣更容易揪出那些吃資源的問題線程。特別是對於主線程,它要處理和渲染所有的接口數據,一旦受到阻塞,程序必然卡頓或停止響應。
Invert Call Tree:反向輸出調用樹。把調用層級最深的方法顯示在最上面,更容易找到最耗時的操作。
Hide System Libraries:隱藏系統庫文件。過濾掉各種系統調用,只顯示自己的代碼調用。
Flattern Recursion:拼合遞歸。將同一遞歸函數產生的多條堆棧(因爲遞歸函數會調用自己)合併爲一條。
Top Functions:找到最耗時的函數或方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章