注意点: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 消耗时间很是长