Traceview是android平台配備一個很好的效能分析的工具。它可以通過圖形化的方式讓我們瞭解我們要跟蹤的程式的效能,並且能具體到method。
在SDK路徑\tools目錄下.
1.在開始使用TraceView你要注意:
你的裝置和模擬器必須設定SD card 和 你的程式擁有對SD card 具有讀寫操作的許可權(
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />)
2.在你的程式中使用TraceView
在activity中的oncreate()中加入:
Debug.stopMethodTracing();
而在onDestroy()中添加:
Debug.stopMethodTracing()
但是在實際的測試時發現這種方式其實並不好用,因為通常情況下我們的activity的onDestroy()是由系統決定何時調用的,因此可能等了很長時間都不會得到這個trace檔案。因此決定在onStop()中來調用Debug.stopMethodTracing()。這樣當我們切換到其它activity或者點擊home鍵的時候onStop()就會被調用,我們也就可以得到完整的trace file。 在運行程式之前,首先要保證我們的AVD是一個帶有SD card的AVD,這樣才能使trace檔案儲存到/sdcard/...當中。運行後可以任意做一些操作,然後點擊home鍵。這是通過DDMS
file explore就可以看到/sdcard/目錄下有一個trace檔案,現在把這個檔案copy到電腦上指定的目錄,假設是C:\tracefile 目錄下。 可以通過命令列來執行traceview,進入tools目錄後,執行 traceview C:\tracefile\yourActivityTrace.trace 之後就可以看到圖形了.
時間片面板(Timeline panel)
分析面板(Profile panel)
常用名詞的一些解釋:
Exclusive: 同級函數本身啟動並執行時間
Inclusive 就是說除統計函數本身啟動並執行時間外再加上調用子函數所啟動並執行時間
Name:列出的是所有的調用項,前面的數字是編號,展開可以看到有的有Parent 和Children子項,就是指被調用和調用。
Incl: inclusive時間佔總時間的白分比
Excl: 執行佔總時間的白分比。
Calls+Recur Calls/Total: 調用和重複調用的次數
Time/Call: 總的時間。(ms)
在實際開始中,我們就可以利用traceview和monkey等工具測試應用,根據反映對具體的代碼進行最佳化