【Android】Android 性能分析利器 - Perfetto

Perfetto 是一个用于分析和跟踪 Android 应用性能的高级工具,主要用于性能分析、系统跟踪以及应用事件的记录。它提供了详细的应用与系统资源(如 CPU、内存、GPU 等)的交互信息,帮助开发者识别性能瓶颈、优化资源使用并提升应用效率。Perfetto 是 Android 官方性能工具的一部分,能够进行应用级和系统级的追踪分析,非常适合深入挖掘应用性能问题。

Perfetto 的主要功能

  1. 系统级追踪:Perfetto 不仅可以追踪应用内部事件,还能跨越整个系统进行追踪,提供全面的性能视图,包括应用进程、系统调用、CPU 调度、内存使用等。
  2. 自定义追踪点:开发者可以添加自定义追踪点来捕获特定事件或操作,以便更精细地分析性能问题。
  3. 跨进程与多线程追踪:Perfetto 支持跨进程和多线程的事件追踪,这使得理解多线程和 IPC(进程间通信)对应用性能的影响更加容易。
  4. CPU、内存与 GPU 分析:Perfetto 提供对 CPU 使用情况(调度、频率、负载)、内存使用情况(堆、栈、系统内存)以及 GPU 活动的详细分析,帮助开发者深入了解资源消耗情况。
  5. 可视化分析:Perfetto 提供一个功能强大的基于网页的 Trace Viewer(追踪查看器),允许你以时间线的方式可视化性能数据,帮助开发者快速发现性能瓶颈和低效代码。
  6. Systrace 替代品:Perfetto 是 Systrace 的现代化替代工具,提供更丰富的数据和更高的性能。

Perfetto 的组成部分

  1. Perfetto SDK:允许开发者在应用中添加自定义追踪点。通过使用 SDK 提供的 API,开发者可以在代码中进行追踪,从而捕捉特定的事件并测量其性能影响。
  2. Perfetto UI(追踪查看器):一个基于 Web 的 UI,用于查看和分析追踪文件。你可以上传追踪文件并通过图形化界面浏览和分析不同的系统与应用事件。
  3. 系统追踪服务:后台服务,负责从各种系统组件和应用中收集追踪数据,包括 CPU 调度、内存使用和线程活动等。

使用场景

  1. CPU 和内存使用分析:Perfetto 帮助你了解应用线程如何在不同的 CPU 核上调度、其执行时间以及内存消耗情况。你可以追踪应用在运行、阻塞或等待 I/O 等不同状态下的时间。
  2. 帧渲染与 GPU 分析:Perfetto 能追踪帧渲染性能和 GPU 使用情况,帮助你优化动画、过渡效果和其他渲染任务。
  3. 多线程与 IPC 分析:对于使用多线程或与其他进程通信的应用,Perfetto 可以显示线程如何调度以及在 IPC(例如 Binder)中花费了多少时间。
  4. 应用启动时间分析:Perfetto 可以追踪应用启动事件,帮助你了解启动时间长的原因,从而优化启动性能。
  5. 长时间追踪:与 Systrace 不同,Perfetto 可以处理较长时间的追踪,即使是几个小时的追踪,也可以进行详细的分析,适合长时间运行的应用性能监控。

如何使用 Perfetto

1. 通过 ADB 命令捕获追踪

你可以使用 ADB(Android Debug Bridge)捕获 Perfetto 追踪。可以通过以下命令在 Android 设备上进行系统级追踪:

bash 复制代码
adb shell perfetto --config demo --out /data/misc/perfetto-traces/trace_file

这将开始追踪并将追踪文件保存到指定位置。捕获完成后,可以通过以下命令下载追踪文件:

bash 复制代码
adb pull /data/misc/perfetto-traces/trace_file

2. 使用 Android Studio Profiler

Perfetto 集成在 Android Studio 的 Profiler 工具中。你可以通过以下方式开始追踪:

  • 打开 Android Studio
  • 选择 View > Tool Windows > Profiler
  • 选择你要追踪的应用进程,捕获系统追踪。

3. 在 Perfetto UI 中分析追踪

一旦你有了追踪文件(.pftrace.json),你可以将其加载到 Perfetto UI(在 ui.perfetto.dev 上可用)。

  • 上传你的追踪文件。
  • 通过基于网页的可视化工具浏览时间线和事件。
  • 重点分析 CPU 调度、线程执行和内存分配等性能数据。

使用 Perfetto SDK 进行自定义追踪

如果你需要追踪应用中的特定部分,可以使用 Perfetto SDK 来添加自定义追踪点。

  1. 将 Perfetto SDK 添加到应用中

    通过在 build.gradle 文件中添加依赖项,将 SDK 集成到项目中:

    groovy 复制代码
    dependencies {
        implementation 'com.google.perfetto:trace:VERSION'
    }
  2. 在代码中进行追踪

    添加 SDK 后,你可以使用 Trace API 来创建追踪点。例如:

    java 复制代码
    Trace.beginSection("custom_event");
    // 执行一些你想测量的操作
    Trace.endSection();

这些追踪点会出现在 Perfetto 的追踪输出中,让你清楚地看到特定操作的执行时间。

Perfetto 的优势

  • 详细的细粒度追踪:提供对应用和系统性能的深度分析,涵盖 CPU、GPU 和内存等。
  • 自定义追踪:开发者可以定义自定义追踪点,进行更细致的性能测量。
  • 跨平台支持:Perfetto 支持 Android 和 Linux 平台,非常适合多种环境的性能调试。

Perfetto 是一个强大且现代化的 Android 性能分析工具,能够深入了解应用的 CPU、GPU 和内存使用情况。通过自定义追踪、实时分析和系统级追踪功能,Perfetto 帮助开发者找出性能瓶颈和低效代码,从而提升应用的运行效率。

将 Perfetto 集成到开发流程中,可以确保应用在不同设备上都能高效、流畅地运行。

相关推荐
GIS开发特训营2 分钟前
Vue零基础教程|从前端框架到GIS开发系列课程(七)响应式系统介绍
前端·vue.js·前端框架·gis开发·webgis·三维gis
Cachel wood27 分钟前
python round四舍五入和decimal库精确四舍五入
java·linux·前端·数据库·vue.js·python·前端框架
学代码的小前端29 分钟前
0基础学前端-----CSS DAY9
前端·css
joan_8533 分钟前
layui表格templet图片渲染--模板字符串和字符串拼接
前端·javascript·layui
m0_748236111 小时前
Calcite Web 项目常见问题解决方案
开发语言·前端·rust
Watermelo6171 小时前
详解js柯里化原理及用法,探究柯里化在Redux Selector 的场景模拟、构建复杂的数据流管道、优化深度嵌套函数中的精妙应用
开发语言·前端·javascript·算法·数据挖掘·数据分析·ecmascript
m0_748248941 小时前
HTML5系列(11)-- Web 无障碍开发指南
前端·html·html5
m0_748235611 小时前
从零开始学前端之HTML(三)
前端·html
一个处女座的程序猿O(∩_∩)O3 小时前
小型 Vue 项目,该不该用 Pinia 、Vuex呢?
前端·javascript·vue.js
hackeroink6 小时前
【2024版】最新推荐好用的XSS漏洞扫描利用工具_xss扫描工具
前端·xss