Android Traceview

来源:互联网 发布:eclipse生成java程序 编辑:程序博客网 时间:2024/05/17 04:59

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耗费较长时间,这个也可以说是相关铺证了。

定位到具体的相关代码后,我们就可以对代码中存在的问题进行调整了 

0 0