Traceview是android平台配备的一个很好的性能分析工具。它可以通过图形化的方式让我们了解我们要跟踪的程序的性能,并且能具体到method。
使用Traceview的版本限制
对于Android 1.5及以下的版本:不支持。
对于Android 1.5以上2.1下(含2.1)的版本:受限支持。trace文件只能生成到SD卡,且必须在程序中加入代码。
对于Android 2.2上(含2.2)的版本:全支持。可以不用SD卡,不用在程序中加代码,直接自己用DDMS就可以进程Traceview。
一、Android 1.5以上2.1下(含2.1)的版本中Traceview的使用
首先,必须在程序当中加入代码,以便生成trace文件,有了这个trace文件我们才可以将其转化为图形。
1.1、启动追踪
使用Debug的以下静态方法方法来启动:
static void startMethodTracing(String traceName)
Start method tracing, specifying the trace log file name.
使用指定trace文件的名字和默认最大容量(8M)的方式开始方法的追踪
static void startMethodTracing()
Start method tracing with default log name and buffer size.
使用默认trace文件的名字(dmtrace.trace)和默认最大容量(8M)的方式开始方法的追踪
static void startMethodTracing(String traceName, int bufferSize, int flags)
Start method tracing, specifying the trace log file name and the buffer size.
使用指定trace文件的名字和最大容量的方式开始方法的追踪。并可指定flags.
注:int flags好像没意义。一般都用0.
static void startMethodTracing(String traceName, int bufferSize)
Start method tracing, specifying the trace log file name and the buffer size.
使用指定trace文件的名字和最大容量的方式开始方法的追踪。
注1:以上的方法的文件都会创建于SD卡下,即"/sdcard/"下,对默认文件名的就是"/sdcard/dmtrace.trace"
如果没SD卡,以上方法会抛异常致使程序crash.
注2:如果文件名没有指定类型,系统为其加上类型.trace
1.2、停止追踪
使用Debug的静态方法方法来停止:
public static void stopMethodTracing ()。
例如在activity的onCreate()中添加Debug.startMethodTracing(), 而在onDestroy()中添加Debug.stopMethodTracing(),
如下:
@Override
public void onCreate(Bundle savedInstanceState) {
Debug.startMethodTracing();
super.onCreate(savedInstanceState);
..............................
}
protected void onDestroy() {
super.onDestroy();
.................
Debug.stopMethodTracing();
}
对于模拟器我们还得创建一个带有SD card的AVD,这样才能使trace文件保存到/sdcard/...当中。
可以在命令中分别单独创建,也可以在创建avd的时候一起将sdcard创建。创建之后通过DDMS file explore我们就可以看到/sdcard/目录下有一个trace文件,如果没有在Debug语句中设置名字则默认为dmtrace.trace.
注意:需要在AndroidManifest.xml文件中添加android.permission.WRITE_EXTERNAL_STORAGE权限。
1.3、 把trace文件从SD卡拷到电脑上
现在我们把这个文件copy到我们的电脑上指定的目录:
adb pull /sdcard/dmtrace.trace d:
1.4、启动traceview可视界面
现在就可以通过命令行来执行traceview了。进入SDK的tools目录后,执行traceview,如下:
traceview D:\dmtrace.trace.
之后即可以看到图形界面了。
1.5、分析traceview结果
Timeline Panel
窗口的上半部分是时间轴面图(Timeline Panel)
The image below shows a close up of the timeline panel. Each thread’s execution is shown in its own row, with time increasing to the right.
Each method is shown in another color (colors are reused in a round-robin fashion starting with the methods that have the most inclusive time).
The thin lines underneath the first row show the extent (entry to exit) of all the calls to the selected method.
界面上方的尺子代表了MethodTracing的时间段(从Debug.startMethodTracing()到Debug.stopMethodTracing()的时间)。
每个线程的函数执行时间图处于和线程名同一行的右侧。
注1:线宽度代表执行该函数本身操作所用的时间。
注2:函数所调用的子函数时间线夹杂在该函数本身操作所用的时间线之间。
注3:时间线的高度不知道有什么意义。
注4:函数本身是嵌套的。
注5:每行下面粗的线段标注了Profile Panel中被选中函数调用所消耗的时间段。每个线段对应一次函数的运行。
在下面的图中我们可以看到有11次对LoadListener.nativeFinished()的调用,其中有一次调用耗时特别的多。这里的11次和图2并不一致,应该是google的疏忽。
图1The Traceview Timeline Panel
Profile Panel
窗口的下半界面是对各个函数调用的汇总图Profile Panel
Figure 2 shows the profile pane, a summary of all the time spent in a method.
The table shows both the inclusive and exclusive times (as well as the percentage of the total time).
Exclusive time is the time spent in the method.
Inclusive time is the time spent in the method plus the time spent in any called functions.
We refer to calling methods as "parents" and called methods as "children." When a method is selected (by clicking on it),
it expands to show the parents and children. Parents are shown with a purple background and children with a yellow background.
The last column in the table shows the number of calls to this method plus the number of recursive calls.
The last column shows the number of calls out of the total number of calls made to that method.
In this view, we can see that there were 14 calls to LoadListener.nativeFinished();
looking at the timeline panel shows that one of those calls took an unusually long time.
图2是对各个函数调用的汇总图Profile Panel。该表给出了the inclusive and exclusive times及他们所占有的百分比。
Exclusive time是该函数本身基本操作(不包括子函数调用)的时间。
Inclusive time是该函数调用所用的时间(包括子函数调用)的时间。
列1:"Name"表示函数名。
双击函数名,可以看到在上半界面是时间轴面图(Timeline Panel)看他的所消耗的时间段。(用粗的线段标注)。
双击函数名左边的"+"展开后可以看到,该函数的"parents"和"children"
列2:"incl%"表示函数的Inclusive time在整个MethodTracing时间里占的百分比。
列3:"Inclusive"表示Inclusive time。
列4:"Excl%"表示函数的Exclusive time在整个MethodTracing时间里占的百分比。
列5:"Exclusive"表示Exclusive time。
列6:"Calls+RecurCalls/Total"表示对函数的调用次数(包括递归调用)。如图2的nativeFinished()那列为"14+0"表示14次非递归调用,0次递归调用.
列7:新的版本(比如2.1)还有"time/calls"表示平均的调用时间(即Inclusive time/ total calls)。如图3。来自google文档的图2感觉有老了。
注:如果函数A调用函数B那么函数A称为函数B的"parents",函数B称为函数A的"children."
图2:Profile Panel
图3:Profile Panel
二、Android 2.2以上(含2.2)的版本中Traceview的简化使用。
Android 2.2除了像2.1当中那样使用Traceview,还可以在DDMS使用Traceview,比以前简化的不少。
* The trace log files are streamed directly to your development machine.
在Android 2.2后可以不用SD卡。Traceview文件流是直接指向开发调试的主机(即DDMS所在的电脑)
To start method profiling:
1. On the Devices tab, select the process that you want to enable method profiling for.
2. Click the Start Method Profiling button.
3. Interact with your application to start the methods that you want to profile.
4. Click the Stop Method Profiling button. DDMS stops profiling your application and opens Traceview with the method profiling information that was collected between the time you clicked on Start Method Profiling and Stop Method Profiling.
在DDMS中如何进行Traceview。
1,在设备表中选中你想进行method trace的进程。
2,单击Method Profiling按钮开始method trace。该按钮在窗口的左上方,它在"stop"按钮的左方,"Device菜单的正下方"。
3,method trace进行中。
4,单击Method Profiling按钮停止method trace。紧接着系统会自动弹出Traceview窗口来显示刚才的method trace结果。
三、Traceview文件格式
本文参照来源:
http://wbdban.javaeye.com/blog/564309
http://developer.android.com/guide/developing/debugging/debugging-tracing.html
http://developer.android.com/guide/developing/debugging/ddms.html#profiling
相关推荐
【Android 性能分析工具 TraceView 的正确使用】 在 Android 开发中,性能优化是提升用户体验的关键环节之一。TraceView 是 Android 提供的一款强大的性能分析工具,它可以帮助开发者定位应用程序中的性能瓶颈,...
本篇文章将对`Traceview`进行详细的总结,探讨如何使用它来提升Android应用的性能。 ### 1. Traceview基础 `Traceview`是一款图形化的性能分析器,它通过收集Dalvik虚拟机执行的函数调用时间,生成详细的性能报告...
本文将详细介绍如何使用`traceview.bat`来深入理解并优化Android应用的性能。 **一、什么是Traceview?** Traceview是Android SDK自带的一个命令行工具,它主要用于分析Java代码的执行性能,帮助开发者找出应用...
`Traceview`是Android开发中一个非常重要的性能分析工具,它可以帮助开发者深入理解应用程序的运行时性能,包括CPU使用率、方法调用时间等。在Android SDK中,`Traceview`是一个图形化的日志分析器,它能显示应用...
总的来说,`traceview.bat` 的丢失是Android开发中常见的问题,及时恢复和了解其使用方法对于提升应用性能至关重要。同时,随着工具的发展,开发者也需要关注新的性能分析工具,以便更好地优化代码。
1. **TraceView**: TraceView是Android SDK中的一个图形化视图,用于分析Java代码的执行性能。它能够显示应用程序中每个方法的调用时间,帮助开发者找出CPU密集型的操作,从而优化代码。使用方法是在代码中插入`...
随着Android Studio成为主要的开发环境,TraceView的使用也与之紧密集成。以下是基于Android Studio的TraceView使用技巧和相关知识点。 首先,在Android Studio中启动TraceView的步骤包括: 1. 双击shift键,然后...
然而,有时在使用Eclipse进行Android开发时,可能会遇到一些工具包缺失的问题,例如"Android在eclipse 缺少的工具包(hprof-conv.exe, traceview.bat)"。这两个文件是Android SDK中用于调试和性能分析的重要工具。 1...
2. **实时监控:** 你可以通过TraceView实时查看应用程序的运行状况,包括CPU利用率、内存使用情况、线程活动等,这对于诊断性能问题非常有帮助。 3. **跟踪会话配置:** 用户可以自定义跟踪级别、事件筛选、数据...
**标题与描述解析** 标题"traceview.bat"指的是...而了解和掌握Traceview的使用方法和分析技巧,对于提升Android应用的性能具有重要意义。开发者应养成定期对应用进行性能分析的习惯,以确保应用的流畅性和响应速度。
在Android开发过程中,性能优化是不可或缺的一环,而`Traceview`工具就是Android SDK提供的一种强大的性能分析工具。本文将详细介绍`Traceview`及其在Android SDK中的应用,以解决"DDMS files not found"的问题。 ...
在Android开发环境中,`traceview.bat`文件是一个重要的性能分析工具,主要用来对应用程序进行...同时,了解如何正确使用`traceview`并结合其他工具如`adb logcat`和内存分析器,可以更有效地提升您的Android应用性能。
TraceView是Android系统中一个强大的性能分析工具,主要用于调试应用程序的性能问题,特别是对于CPU密集型的任务和内存使用情况有着详细的追踪能力。它能够提供细粒度的函数调用时间线,帮助开发者找出代码中的瓶颈...
总结,"ddms_traceView.zip"中的"ddms5091614144790295234.trace"文件是针对Android应用CPU性能分析的重要工具,通过DDMS和TraceView的使用,开发者能够深入理解应用的运行情况,及时发现和解决性能问题,提升应用的...
OTDR(Optical Time Domain Reflectometer,光时域反射仪)仿真软件TraceView是一款专为Android平台设计的强大性能分析工具。...通过熟练掌握TraceView的使用,开发者可以有效地提高Android应用的性能和用户体验。
一、TraceView工具简述Traceview是android平台配备的一个很好的性能分析工具。它可以通过图形界面的方式让我们了解我们要跟踪的程序的性能,并且能具体到method。 一、TraceView工具简述 Traceview是android平台...
在Android开发过程中,性能优化是至关重要的,而有效...在实际开发过程中,结合Emmagee和其他性能分析工具,如Systrace、TraceView等,可以形成一套完善的性能优化工具链,帮助我们打造出更高效、更稳定的Android应用。
- **Android Studio Profiler**:集成了内存、CPU、网络和UI性能的实时分析,是目前最常用的Android性能分析工具,与IDE紧密结合,使用方便。 - **Firebase Performance Monitoring**:Google提供的云服务,可收集...