共计 2262 个字符,预计需要花费 6 分钟才能阅读完成。
在 Android Studio 4.0 中,咱们曾经对 CPU Profiler 的 UI 做了大量调整来提供更加直观的工作流记录,而在 Android Studio 4.1 中,咱们基于开发者们的反馈对此性能进行了继续改良,并且新增了更多个性。
咱们将会在本文重点介绍 Android Studio 中 System Trace 的新增性能,System Trace 也就是 “ 零碎跟踪 ” 的意思,用来记录短时间内的设施流动,它会生成一个 .trace 跟踪文件,该文件可用于生成零碎报告,此报告可帮忙您理解如何最无效地晋升利用或游戏的性能。System Trace 尽管使用率不高,但它是一款功能强大的 CPU 记录配置。不同于函数跟踪,如 Java Method 或 C/C++ Func Trace,System Trace 跟踪的是零碎级的内容,如设施流动 (例如 CPU 外围调度) 和 Android 零碎过程 (例如 SurfaceFlinger)。此外,您还能够通过在利用中调用 Trace API,应用 自定义事件 检测您的代码,这样您的自定义事件便会与零碎事件一起被收集。当您在排查性能问题时 (例如 UI 卡顿或功耗过高),这些组合数据就会显得非常有用。
一次搞定所有线程
为了便于进行剖析,咱们将 CPU 的记录从主分析器的工夫线中拆散了进去。在这个专用视图中,跟踪数据被整顿到了 Profiler 窗口的左侧区域中。
Android Studio 4.1 Beta 1 中的 System Trace 界面
您能够通过简略拖拽将某一区域或者区域内的某个元素进行向上或向下挪动来从新组织列表。
咱们从开发者们的反馈得悉,抉择每个线程来查看它的调用图 (或 System Trace 的跟踪事件) 是一件很麻烦的事,所以咱们将所有线程流动整合到了同一个视图中,从而能够在显示线程状态的同时显示调用图。默认状况下,咱们依据线程的忙碌水平对其进行排序,然而您也能够拖放任意一个线程以对其从新排序。
拖放线程来扭转列表程序
您也能够通过单击三角形图标或双击线程名称来折叠或开展每个线程。留神,对于 Java Method Trace 和 C/C++ Function Trace,因为调用栈很深,咱们默认状况下会折叠所有线程视图,以便您能够高深莫测地查看所有线程数据。
C/C++ Function Trace 默认以折叠状态展现线程数据
为了便于辨别,当初每个 System Trace 的跟踪事件都有一个独立的色彩。
System Trace 事件按命名增加了对应色彩
更加直观的导航
新的 Trace UI 应用了改良的时间轴导航计划,咱们用次要 – 细节视图替换了以前的程度滚动条。
在顶部,您能够看到一个时间轴,它仅仅映射了跟踪过程而不是整个剖析过程。您能够应用范畴选择器疾速放大范畴到特定的时间段,而上面的局部则会显示对应的具体数据。
应用范畴选择器来专一于时间轴的一小部分
在这里您能够进行更加精密的导航操作:
- 应用 Ctrl (在 Mac 上为 Cmd) + 鼠标滚轮进行缩放;
- 按住空格键的同时左右拖动鼠标可平移视图;
- 应用 “WASD” 键缩放和平移视图,就像 Chrome 中的旧版 SysTrace UI 一样 (chrome://tracing)。
从 Android Studio 4.1 Canary 9 开始,您能够通过拖动鼠标在 Thread 局部进行框选。这一操作使您能够准确地抉择一个矩形区域,并且只有点击右上角的 Zoom to Selection (或 “M” 键) 便能够放大该区域。您甚至能够逾越多个线程执行抉择操作,这个个性在您把类似线程拖放到一起进行检视时非常有用。举例来说,您兴许会想对多个辅助线程进行剖析,而这种场景在游戏开发中很常见。
框选、拖放与缩放
剖析面板
说到剖析,咱们想着重聊一聊 Android Studio 4.0 中引入的新 Analysis Panel,它位于 Profiler 窗口的左边一列。
基于您所抉择的跟踪记录,在这里能够找到相应的剖析数据。当您在右边栏中抉择一个线程、堆栈帧或者跟踪事件时,Analysis Panel 将会显示对应的特定信息。举例来说,当您抉择了一个线程时,该线程的状态与其余一些有用的信息就会被显示进去。
咱们心愿 Analysis Panel 能对您有所帮忙,所以咱们始终在摸索应用各种模式来展现这些有用的剖析数据。在 CPU Profiler 中,咱们曾经有了 Top Down、Flame Chart 和 Bottom Up。作为补充,咱们在 Android Studio 4.1 Canary 10 中增加了 Summary 选项卡,用于展现线程状态散布、跟踪事件统计等信息。举例来说,咱们常常须要深刻理解一个重复呈现的跟踪事件。Summary 选项卡会显示根本的统计信息 (如计数,最小值,最大值等) 以及所选跟踪事件中运行工夫最长的一次事件。您也能够通过从表中抉择一行来导航到另一个事件。
统计信息以及跟踪事件中运行工夫最长的事件
稳定性与性能改良
最初但也同样重要的是,咱们还改良了 CPU 记录的性能和稳定性:
- 咱们修复了一些可能导致记录失败的 Bug;
- 咱们从 Android API level 28 开始应用 Perfetto 作为 System Trace 的后盾,从而能够从 Android 平台的最新检测技术中获益;
- 咱们还优化了 profiler 的代码,从而显著缩小了解析跟踪记录时的内存耗费 (最多达 80%)。这样您便能够开启和解析更长的跟踪信息。请记住,您能够减少 Android Studio 的 最大堆容量 来反对更长时间的追踪。
下载最新的 Android Studio 4.1 预览版 能够尝鲜本文介绍的新个性。也同样欢送大家 反馈。