前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android 性能分析学习(CPU Profiler)

Android 性能分析学习(CPU Profiler)

作者头像
艳龙
发布2021-12-16 17:39:08
2.9K0
发布2021-12-16 17:39:08
举报
文章被收录于专栏:yanlongli_艳龙

应用开发过程中大部分时间都是在进行需求开发,而性能分析却进行的很少。 这里将介绍通过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。在跟踪数据窗格的任意标签页中都可以执行此操作。* 如下图是一个实际的数据分析例子:

Flame Chart 窗口检测跟踪数据

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/3/11 下,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于 CPU Profiler
  • 如何 使用 CPU Profiler
  • 如何 查看 CPU Profiler(预览)
  • 使用CPU Profiler 记录分析数据
  • Call Chart 窗口检测跟踪数据
  • Flame Chart 窗口检测跟踪数据
  • 使用 Debug API 记录 CPU 活动
  • 在应用启动过程中记录 CPU 活动
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档