Android之基准配置文件

概述

基准配置文件可以略过所包含代码路径的解译和即时 (JIT) 编译步骤,从而使应用首次启动时的代码执行速度即可提高约 30%。

通过在应用或库中分发基准配置文件,Android 运行时 (ART) 可以通过预先 (AOT) 编译来优化指定的代码路径,从而针对每位新用户以及每个应用更新提升性能。这种配置文件引导式优化 (PGO) 可让应用优化启动、减少互动卡顿,并在用户首次启动应用时即可提高整体的运行时性能。

优势

利用基准配置文件,自应用首次运行起,所有用户互动(例如应用启动、切换界面或滚动浏览内容)都会变得更加顺畅。通过提升应用的速度和响应能力,基准配置文件可以提高日活跃用户数和平均回访率。

使用

vbnet 复制代码
AS版本:Android Studio Iguana | 2023.2.1 RC 2
AGP:8.3.0-rc02版本
  1. 选择 File > New > New Module
  2. 在 Templates 面板中选择 Baseline Profile Generator 模板,并对其进行配置
  3. 生成基准配置文件baseline-prof.txt有两种方式
    • 使用./gradlew :app:generateReleaseBaselineProfile命令
    • 运行Generate Baseline Profile for app

方式1:使用./gradlew :app:generateReleaseBaselineProfile命令 同样官网教程中也有提示:

方式2. 运行Generate Baseline Profile for app 提示

vbnet 复制代码
Error: Target module's selected variant is debuggable. Please use Build Variants tools window to change the variant of Test.app.

app模块不能选debug,要选release。

点击运行在底部Run任务栏的Test Results里看到执行的也是:app:generateReleaseBaselineProfilegradle任务

两种方式都会在app\src\release\generated\baselineProfiles文件夹下生成baseline-prof.txt和startup-prof.txt文件(两个txt文件二进制一样)

问题1:针对Build Variants里:app模块变体的选择问题

方式1中,因为是针对Release这个变体运行的,不需要手动更改

方式2 run时,只有release才可生成基准配置文件,故要明确

问题2:两种方式生成的baseline-prof.txt文件对比发现,方式1生成的baseline-prof.txt的文件,部分行会多个S

  1. 启动效果

在StartupBenchmarks文件中,选择run

效果几乎没有

把baseline-prof.txt文件复制到app\src\main\下,再运行

启动效果提升12.2%

推荐做法:生成baseline-prof.txt文件使用 ./gradlew :app:generateReleaseBaselineProfile。 查看效果,在StartupBenchmarks文件中直接run

代码路径

基准配置文件的原理

相关推荐
geovindu7 小时前
sql:Search-Optimized SQL Queries using mysql 9.0
android·数据库·sql·mysql·数据库开发·数据库架构
知之则吱吱9 小时前
Android 开发者验证机制迎来新变化:核心要求、实施时间与开发者应对指南
android·google
墨天梦10 小时前
D09_Retrofit接口与数据转换
android·kotlin·retrofit
电商API_1800790524711 小时前
闲鱼商品列表API接口商品详情API接口请求示例(含一份真实响应数据示例)
android·数据挖掘·网络爬虫·跨境电商·反向海淘
我命由我1234511 小时前
Android 广播 - 组件通信
android·java·开发语言·android studio·android jetpack·android-studio·android runtime
阿俊-全栈开发11 小时前
LikeShop 单商户标准版商品管理二开:分类、SKU 规格与库存联动实现
android·likeshop·likeshop开源商城
用户21816970493014 小时前
Kotlin 语法二
android
妖星14 小时前
android 源码分析surfaceFinger是如何通过设置属性启动bootanim
android
JoyMonitor14 小时前
APK mmap 内存增长定位:pagemap 与 DEX 结构联合定位方法
android