【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 集成到开发流程中,可以确保应用在不同设备上都能高效、流畅地运行。

相关推荐
腾讯TNTWeb前端团队5 小时前
helux v5 发布了,像pinia一样优雅地管理你的react状态吧
前端·javascript·react.js
范文杰9 小时前
AI 时代如何更高效开发前端组件?21st.dev 给了一种答案
前端·ai编程
拉不动的猪9 小时前
刷刷题50(常见的js数据通信与渲染问题)
前端·javascript·面试
拉不动的猪9 小时前
JS多线程Webworks中的几种实战场景演示
前端·javascript·面试
FreeCultureBoy10 小时前
macOS 命令行 原生挂载 webdav 方法
前端
uhakadotcom10 小时前
Astro 框架:快速构建内容驱动型网站的利器
前端·javascript·面试
uhakadotcom10 小时前
了解Nest.js和Next.js:如何选择合适的框架
前端·javascript·面试
uhakadotcom10 小时前
React与Next.js:基础知识及应用场景
前端·面试·github
uhakadotcom11 小时前
Remix 框架:性能与易用性的完美结合
前端·javascript·面试
uhakadotcom11 小时前
Node.js 包管理器:npm vs pnpm
前端·javascript·面试