原文作者:medium.com/@yi.yang
发布时间:2020年6月17日 - 5分钟阅读
在Android Studio 4.0中,我们对CPU Profiler UI进行了全面的改进,以提供更直观的录制工作流程。我们根据您的反馈继续进行改进,并在4.1中增加了更多的功能。
在本文中,我们将重点介绍Android Studio中系统跟踪的新功能,这是一种不常使用但功能强大的CPU记录配置。与Java Method或C/C++ Function Traces不同,System Trace可以收集设备活动(如CPU核心调度)和Android系统进程(如SurfaceFlinger)。此外,您还可以通过调用应用程序中的Trace API,用自定义事件来检测您的代码。这样,您的自定义事件将与系统事件一起被收集。当您调查性能问题(如 UI jankiness 或高功耗)时,所有这些数据结合起来就能派上用场。
一次收集所有线程
CPU记录现在与主剖析器时间线分开,以便于分析。在这个专用视图中,跟踪数据被组织在Profiler窗口左侧的各个部分。
Android Studio 4.1 Beta 1中的系统跟踪功能
您可以上下移动部分来重新组织列表,或者通过简单的拖放来移动部分内的单个项目。
我们从您那里了解到,选择每个线程来查看其调用图表(或系统跟踪的跟踪事件)很麻烦,因此我们将所有线程活动合并到一个视图中,一次性显示线程状态和调用图表。默认情况下,我们按照线程的繁忙程度进行排序,但你可以拖拽任何一个单独的线程来重新排序。

拖放线程来改变列表顺序
你也可以通过单击三角形图标或双击线程名称来折叠或展开每个线程。需要注意的是,对于Java方法跟踪或C/C++函数跟踪,由于调用堆栈较深,我们默认折叠所有线程,这样你可以在前面对所有线程数据一目了然。
C/C++函数跟踪显示线程在默认情况下被折叠。
对于系统跟踪,现在跟踪事件的颜色是唯一的,以便于区分。
系统跟踪事件按名称的颜色编码
更直观的导航
新的跟踪UI有一个全新的时间线导航方案。我们用主细节视图取代了旧的水平滚动条。
在顶部,您可以看到一个时间线,它只映射到跟踪的持续时间,而不是整个剖析会话。使用范围选择器,你可以快速缩小到一个特定的时间范围,下面的部分显示详细的数据。
使用范围选择器聚焦于时间线的一小块。
从那里你可以执行更精确的导航操作。
- 使用 Ctrl(或 Mac 上的 Cmd)+鼠标滚轮进行放大/缩小。
- 在按住空格键的同时,通过向左和向右拖动鼠标来平移视图。
- 使用 "WASD "键来缩放和平移视图,就像 Chrome 浏览器中的传统 SysTrace UI (chrome://tracing)。
从Android Studio 4.1 Canary 9开始,你可以在线程部分拖动鼠标来执行框选。框选可以让你精确地选择一个矩形区域,你可以通过点击右上角的 "放大到选择 "按钮("M "键)来放大这个区域。您甚至可以跨多个线程进行选择。当您将类似的线程拖放到彼此旁边并同时检查所有线程时,这很有用。例如,您可能希望对多个工作线程(通常在游戏中发现)进行分析。
方框选择与拖放和缩放相结合。
分析小组
说到分析,我们要重点介绍一下Android Studio 4.0中新引入的分析面板,在Profiler窗口的右侧栏。
在这里,你可以根据你的选择找到从记录的跟踪中导出的分析数据。当您从左侧栏中选择一个线程、堆栈框架或跟踪事件时,分析面板将显示与您的选择有关的特定信息。例如,当一个线程被选中时,它的线程状态和其他有用的信息都会显示出来。
我们想让这个分析面板对你有用,所以我们一直在探索各种方法来浮现有用的分析数据。除了CPU Profiler中已经存在的Top Down、Flame Chart和Bottom Up图表之外,我们在Android Studio 4.1 Canary 10中增加了一个Summary标签,用于线程状态分布、跟踪事件统计等。例如,很多时候我们想了解更多关于一个重复出现的跟踪事件的信息。摘要选项卡显示了基本的统计数据(计数、最小值、最大值等)以及所选跟踪事件的最长运行次数。你甚至可以通过从表中选择一行来导航到另一个事件。
追踪事件的统计和最长时间的发生次数
稳定性和性能改进
最后但并非最不重要的是,我们一直在改进CPU记录的稳定性和性能。
- 我们修复了几个可能导致记录失败的错误。
- 我们在 Android API 28 级及以后的版本上以 Perfetto 为后台构建了系统跟踪,利用了 Android 最新的仪器技术。
- 我们还优化了剖析器代码,以显著降低解析记录的跟踪时的内存消耗(高达80%),使您能够打开并分析更长的跟踪。请记住,您可以增加Android Studio的最大堆大小,这有助于处理非常长的痕迹。
下载最新的Android Studio 4.1预览版来试用这些功能。我们一如既往地感谢您的反馈。
通过( www.DeepL.com/Translator )(免费版)翻译