Android 性能分析学习(CPU Profiler)

应用开发过程中大部分时间都是在进行需求开发,而性能分析却进行的很少。
这里将介绍通过CPU Profiler工具来进行app的性能分析。

关于 CPU Profiler

  1. 可以使用 CPU Profiler 在与应用交互时实时检查应用的 CPU 使用率和线程活动,也可以检查记录的方法跟踪数据、函数跟踪数据和系统跟踪数据的详细信息。
  2. 优化应用的 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 ChartFlame ChartTop DownBottom 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。在跟踪数据窗格的任意标签页中都可以执行此操作。
*
如下图是一个实际的数据分析例子:

image.png

Flame Chart 窗口检测跟踪数据

image.png

Flame Chart 标签页提供一个倒置的调用图表,用来汇总完全相同的调用堆栈。也就是说,将具有相同调用方顺序的完全相同的方法或函数收集起来,并在火焰图中将它们表示为一个较长的横条(而不是将它们显示为多个较短的横条,如调用图表中所示)。这样更方便您查看哪些方法或函数消耗的时间最多

** “Top Down”和“Bottom Up” 窗口检测跟踪数据

image.png

Top DowBottom 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

你可能感兴趣的:(Android 性能分析学习(CPU Profiler))