应用开发过程中大部分时间都是在进行需求开发,而性能分析却进行的很少。 这里将介绍通过CPU Profiler工具来进行app的性能分析。
关于 CPU Profiler
- 可以使用 CPU Profiler 在与应用交互时实时检查应用的 CPU 使用率和线程活动,也可以检查记录的方法跟踪数据、函数跟踪数据和系统跟踪数据的详细信息。
- 优化应用的 CPU 使用率能带来诸多好处,如提供更快、更顺畅的用户体验,以及延长设备电池续航时间
如何 使用 CPU Profiler
可以按照以下步骤打开 CPU Profiler: 1.依次选择 View > Tool Windows > Profiler 或 点击工具栏中的 Profile 图标 或 点击Android Studio最下方的 Profile 图标. 2.点击 CPU 时间轴上的任意位置以打开 CPU Profiler
如何 查看 CPU Profiler(预览)
CPU Profiler(预览)
1.事件时间轴:显示应用中的 Activity 在其生命周期内不断转换而经历各种不同状态的过程,并指示用户与设备的交互,包括屏幕旋转事件。
2. CPU 时间轴:显示应用的实时 CPU 使用率(以占总可用 CPU 时间的百分比表示)以及应用当前使用的线程总数。 此时间轴还会显示其他进程(如系统进程或其他应用)的 CPU 使用率,以便您可以将其与您应用的 CPU 使用率进行对比。您可以通过沿时间轴的横轴方向移动鼠标来检查历史 CPU 使用率数据
3.线程活动时间轴:列出属于应用进程的每个线程,并使用下面列出的颜色在时间轴上指示它们的活动。记录跟踪数据后,您可以从此时间轴上选择一个线程,以在跟踪数据窗格中检查其数据 绿色:表示线程处于活动状态或准备使用 CPU 黄色:表示线程处于活动状态,但它正在等待一项 I/O 操作(如磁盘或网络 I/O),然后才能完成它的工作 灰色:表示线程处于休眠状态并且没有占用任何 CPU 时间
使用CPU Profiler 记录分析数据
为进一步分析程序的方法耗时等数据,可以通过记录跟踪数据来进行分析。 如下图正在进行跟踪记录
记录跟踪数据
记录完成之后,点击 Stop,然后可以查看跟踪到到数据, 如下图:
数据记录跟踪
1.选定的时间范围:确定要在跟踪数据窗格中检查所记录时间的哪一部分。当您首次记录跟踪数据时,CPU Profiler 会自动在 CPU 时间轴上选择记录的完整长度。 要仅检查已记录的时间范围中的一部分的跟踪数据,请拖动突出显示区域的边缘。
2.时间戳:指示所记录跟踪数据的开始和结束时间(相对于分析器开始收集 CPU 使用率信息的时间), 点击时间戳可以查看到完整的记录。
3.跟踪数据窗格: 在至少有一条数据的时候,这个窗口才会显示。
4.跟踪数据窗格标签页: 包含Call Chart
、 Flame Chart
、Top Down
、Bottom Up
5.时间参考菜单: 有下列两个选项 5.1 Wall clock time: 该时间信息表示实际经过的时间 5.2 Thread time: 该时间信息表示实际经过的时间减去线程没有占用 CPU 资源的那部分时间。对于任何给定的调用,其线程时间始终小于或等于其挂钟时间。使用线程时间可以让您更好地了解线程的实际 CPU 使用率中有多少是给定方法或函数占用的
5.过滤器:按 Ctrl F(在 Mac 上,按 Command F 键)可以进行搜索
Call Chart 窗口检测跟踪数据
Call Chartg
Call Chart 标签页会以图形来呈现方法跟踪数据或函数跟踪数据,其中调用的时间段和时间在横轴上表示,而其被调用方则在纵轴上显示。其中: 橙色:对系统 API 的调用显示为橙色 蓝色: 对第三方 API(包括 Java 语言 API)的调用显示为蓝色 绿色: 对应用自有方法的调用显示为绿色
tips:
要跳转到某个方法或函数的源代码,请右键点击该方法或函数,然后选择 Jump to Source。在跟踪数据窗格的任意标签页中都可以执行此操作。*
如下图是一个实际的数据分析例子:
Flame Chart 窗口检测跟踪数据
Flame Chart 标签页提供一个倒置的调用图表,用来汇总完全相同的调用堆栈。也就是说,将具有相同调用方顺序的完全相同的方法或函数收集起来,并在火焰图中将它们表示为一个较长的横条(而不是将它们显示为多个较短的横条,如调用图表中所示)。这样更方便您查看哪些方法或函数消耗的时间最多
** “Top Down”和“Bottom Up” 窗口检测跟踪数据
Top Dow
和Bottom Up
显示的是一个调用列表, 函数的调用方 和 被调用方在树的节点位置不同(如图中所示:A 调用 B, A 调用 D, B调用C , D调用D、B, B调用C)
跟踪数据窗格标签页中具体的详细介绍也可以查看: CPU Profiler 检查跟踪数据
使用 Debug API 记录 CPU 活动
使用 Debug API,可以让应用能够在 CPU Profiler 中开始和停止记录 CPU 活动。
Debug.startMethodTracingSampling():
开始记录CPU活动
Debug.stopMethodTracing():
停止记录CPU活动
数据跟踪结束后,*.trace
文件会保存在 ~/sdcard/ Android/data/[包名]/files
目录下。
可将文件放入Android Studio中进行分析。
在应用启动过程中记录 CPU 活动
请执行以下操作:
- 1.依次选择 Run > Edit Configurations。 - 2.在 Profiling 标签中,勾选 Start recording a method trace on startup 旁边的复选框。 - 3.从菜单中选择 CPU 记录配置。 - 4.点击 Apply。 - 5.依次选择 Run > Profile,将您的应用部署到搭载 Android 8.0(API 级别 26)或更高版本的设备上。
END!
参考: Inspect CPU activity with CPU Profiler