Android Perfetto 监控应用启动耗时

Perfetto 是一个 Google 开发的用于安卓系统性能监控和调试 的工具,它旨在提供实时数据收集和可视化功能,帮助我们分析和优化应用程序的性能表现。Perfetto 可以捕获系统事件、CPU、内存、网络、GPU 等性能指标数据,并将其记录为轻量级的 Trace 文件,我们可以通过 Perfetto 的可视化界面(**https://ui.perfetto.dev/**)或者命令行工具进行查看和分析。

此前更多使用的是 Systrace,而 Perfetto 相比 Systrace 有更多的优势。

Perfetto 支持更多的性能指标数据的采集和记录,包括系统事件、内核跟踪、堆栈跟踪等,提供了更全面的性能分析功能。其次, Perfetto 的可视化界面也更加友好和直观,方便我们快速理解和分析数据。

在实际的开发过程中,做启动优化和监控单纯靠 Traceview 是不太准确的,因为 Traceview 获取的信息比较局限,而 Perfetto 能站在上帝视角来查看应用的启动过程

接下来我举一个使用 Perfetto 的 ADB 命令来监控应用启动耗时的例子


在应用启动的时候故意写一个耗时(渲染一个布局800次):

Kotlin 复制代码
class MyApp : Application() {

    override fun onCreate() {
        super.onCreate()
        for (i in 0 until 800) {
            LayoutInflater.from(this).inflate(R.layout.activity_main, null)
        }
    }
}

把应用安装到手机上,杀掉要监控的应用的进程,回到桌面,准备工作就算完成了


使用 adb 命令开启监控:

复制代码
adb shell perfetto -o /data/misc/perfetto-traces/trace_file.perfetto-trace -t 5s sched freq idle am wm gfx view binder_driver hal dalvik res memory

一按回车会进入录制状态:

在录制状态下打开应用,等待录制结束

录制完成后再使用 adb 命令将 Trace 文件导到本地电脑上:

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

将 Trace 文件拖入可视化界面(**https://ui.perfetto.dev/**)它会自动打开

确认有 Android App Startups 标识(没有的话重新录制一遍)

展开要监控的包名就能看到启动信息了:

这个 bindApplication 就是 App 启动初始化的过程了,可见是非常长的,也就是比较耗时。我们将其放大即可看到具体的耗时操作(使用键盘上的 ws 可以缩放,ad 可以左右移动)

可见上面密密麻麻的 inflate,因为我们在 Application 的 onCreate 中渲染了 800 次布局


我们知道了做了哪些耗时操作后,再根据业务实际情况进行异步等优化处理,这样子我们启动优化的目的就达到了

相关推荐
程序员陆业聪2 小时前
从 OpenClaw 到 Android:Harness Engineering 是怎么让 Agent 变得可用的
android
hnlgzb4 小时前
常见的Android Jetpack库会有哪些?这些库中又有哪些常用类的?
android·android jetpack
钛态7 小时前
Flutter 三方库 http_mock_adapter — 赋能鸿蒙应用开发的高效率网络接口 Mock 与自动化测试注入引擎(适配鸿蒙 HarmonyOS Next ohos)
android·网络协议·flutter·http·华为·中间件·harmonyos
王码码20357 小时前
Flutter for OpenHarmony:Flutter 三方库 algoliasearch 毫秒级云端搜索体验(云原生搜索引擎)
android·前端·git·flutter·搜索引擎·云原生·harmonyos
左手厨刀右手茼蒿7 小时前
Flutter for OpenHarmony: Flutter 三方库 shamsi_date 助力鸿蒙应用精准适配波斯历法(中东出海必备)
android·flutter·ui·华为·自动化·harmonyos
代码飞天8 小时前
wireshark的高级使用
android·java·wireshark
2501_915918419 小时前
苹果App Store上架审核卡住原因分析与解决方案指南
android·ios·小程序·https·uni-app·iphone·webview
skiy9 小时前
MySQL Workbench菜单汉化为中文
android·数据库·mysql
小小小点9 小时前
Android四大常用布局详解与实战
android
MinQ10 小时前
binder和socket区别及原理
android