注意點:html
兩種方式 互相補充python
正確認識工具及不一樣場景選擇合適 的工具app
一、traceview工具:工具
圖形的形式展現代碼執行時間、調用棧等優化
信息全面,包含全部線程線程
使用方式:orm
Debug.startMethodTracing("app");//在application類裏的onCreate()方法最開始點調用 ,參數做爲保存文件的名字,例如:app.tracehtm
Debut.stopMethodTracing();//在application類裏的onCreate()方法裏結束點調用 blog
生成文件在sd卡:Android/data/packagename/files/xxx.trace排序
文件分析:
優缺點分析:
traceview 支行時開銷嚴重,總體都會變慢。由於他會把全部線程裏的全部方法都運行一次,以及進行排序。
可能會帶偏優化方向
traceview與cpu profile對比,它能夠經過代碼埋點,能夠準確進行抓取信息,profile則須要在APP啓動那一刻立刻同步啓動,才能看獲得結果。
二、systrace工具:
結合Android內核的數據,生成Html報告
要求API 18以上使用,爲了兼容版本,推薦TraceCompat
使用方式:
python systrace.py -t 10[other-options] [categories]
TraceCompat.beginSection("app");//在application類裏的onCreate()方法最開始點調用 ,參數做爲保存文件的名字,例如:app.trace
TraceCompat.endSection();//在application類裏的onCreate()方法裏結束點調用
在終端運行:
python /User/Liuzhao.Future/Library/Android/sdk/platform-tools/systrace/systrace.py -b 32768 -t 5 -a com.optimize.performance -o performance.html sched gfx view wm am app
優缺點:
輕量級,開銷小
直接反映cpu利用率
cputime 與 c區別:
優化方向應該看的是cputime的時間,而非 walltime 時間
walltime 是代碼執行時間,cputime 是代碼消耗cpu的時間(重點指標)
舉例:鎖衝突 ,致使walltime 消耗時間很是長