文章概覽:html
TraceView概述java
Traceview是android平臺配備一個很好的性能分析的工具。它能夠把trace文件轉化爲圖形,經過圖形化的方式讓咱們瞭解咱們要跟蹤的程序的性能。當你有一個trace 的日誌文件時(經過在程序添加trace代碼或使用DDMS或studio生成),你可使用TraceView加載日誌文件,Traceview 能夠幫助你調試你的應用和分析它的性能。android
trace文件的3種生成方式markdown
第一種,使用android studio 直接生成(推薦)
操做:
1,點擊Monitors–>CPU欄目上的小鬧鐘(以下圖),開始記錄。
2,操做你手機須要分析的功能。好比,UI卡頓那塊,應用耗時那塊..
3,在此點擊Monitors–>CPU欄目上的小鬧鐘(以下圖),結束記錄,這是會生成trace文件。(能夠點擊studio 左側的Captures。它裏面的Method Tracing 裏面能夠看到)
4,這個時候,studio會自動打開這個trace文件。(很惋惜,此次說的不是它)
函數
第二種,嵌入代碼代碼生成
使用
android.os.Debug.startMethodTracing(String traceName);
android.os.Debug.stopMethodTracing();
這兩個方法添加到你想分析的那些代碼中,當程序運行了這段代碼,就會在/sdcard
目錄中生成一個traceName命名的trace文件。工具
TraceView界面及參數介紹性能
界面說明
界面主要有上下兩個面板,上面是時間線面板,下面是分析面板。時間線面板描述了線程和方法的開始和結束,分析面板提供了一個方法中發生的狀況信息。時間線面板又能夠分爲兩個部分(左右),暫時分爲三個部分。以下圖標記ui
第一部分(上面板左側).net
數據中所採集的線程信息,好比main線程等等線程
使用TraceView分析,定位問題
上面給幾個參數標記了重要,下面咱們來想下爲何呢?
咱們在分析耗時的時候通常有兩種狀況:
- 1,調用次數很少。可是,自己就很是耗時。
- 2,自己不是很耗時。可是,調用很是頻繁。
1,第一種狀況,咱們可使用 Cpu Time 來查看它的耗時狀況。
2,第二種狀況,咱們可使用 Calls+RecurCalls/Total 來查看它的調用狀況。
如今,咱們模擬,使用CPU Time來分析
第一步,點擊CPU Time列,讓函數從高到底排列,並找到咱們項目的方法點擊進入,以下圖
咱們發現裏面分爲Parents和Children。
Parents:自身函數。
Children:調用內部的函數。
而後,咱們找到了drawRegionV2的函數
第二步,點擊drawRegionV2函數,一步步找進去,getPoints()->toFloat(),最後,以下圖
第三步,查看咱們的代碼,並解決問題。
java代碼
最後,發現了ondraw裏面的toFloat()函數的BigDecimal。執行一次getPoints函數就會建立好幾個函數的BigDecimal對象,並且仍是在Ondraw裏面。
分析到這裏,咱們已經定位到問題了。
相關資料
https://developer.android.com/studio/profile/traceview-walkthru.html
https://developer.android.com/studio/profile/traceview.html#traceviewLayout
http://blog.csdn.net/androiddevelop/article/details/8223805
http://blog.csdn.net/u011240877/article/details/54347396