Android Traceview 官方文档链接:http://developer.android.com/tools/debugging/debugging-tracing.html
我们可以根据traceView 文件对自己的应用进行性能分析;
1 如何产生trace文件
两种方式: 在代码中需要开始trace 的地方添加 Debug.startMethodTracing(文件名); 需要停止trace的地方添加代码Debug.stopMethodTracing(); 产生的trace文件位于/sdcard/文件名.trace 从sdcard 中pull 出来, 用sdk/toos/traceView打开文件进行分析
另一个方式是直接在ddms中 按下 start method profile按钮, 进行相关操作后再按下刚才那个按钮,stop method profile, ddms会直接打开文件流进行分析
2 分析trace文件
Trace layout
上半部分为 timeline panel : 左边为线程名称, 右边方法执行时间轴,宽度代表该方法执行的时间长度,各个方法以各个不一样的颜色区分, 可以把鼠标放在宽度最宽的颜色上,在上面会显示该方法的相关信息
下半部分为 profile panel : 显示各个方法的具体时间: INCL TIME 该函数调用总共花费的时间(包含子函数): EXCL 该函数不包括子函数的调用时间, 颜色对应于 timeline panel 中的颜色
3具体案例
<pre name="code" class="html"><span style="font-size:12px;">button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bitmap contentBitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(),
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(contentBitmap);
canvas.save();
view.draw(canvas);
canvas.restore();
int i = 1000;
for (int j = 0; j < i; j++) {
Log.i("x", "j " + j);
}
Debug.stopMethodTracing();
}
});</span>
可以点击各个选项查看相关排序, 点击Real Time / Call 图如下,可以看出view performclick 执行的时间最长,且根源为 Bitmap.createBitMap
点击Bitmap.createBitMap 在 timeline panel 就会定位到相关方法处如下图
可以点击各个选项查看相关排序, 点击Real Time / Call 图如下,可以看出view performclick 执行的时间最长,且根源为 Bitmap.createBitMap
点击Bitmap.createBitMap 在 timeline panel 就会定位到相关方法处如下图
上图中的橘红色为VMDEBUG.startGC,绿色部分的Bitmap.nativeCreate, 以前从android的相关资料看到 java 的gc耗费较长时间,这个也可以说是相关铺证了。
定位到具体的相关代码后,我们就可以对代码中存在的问题进行调整了