全新版Jetpack进阶提升,系统性落地短视频App
download:https://www.sisuoit.com/4170.html
运用 Jetpack 基准库,您能够从 Android Studio 中快速对基于 Kotlin 或 Java 的代码进行基准化剖析。该库会处理预热,衡量代码功用和分配计数,并将基准化剖析成果的更多详细信息输出到 Android Studio 控制台和 JSON 文件。
用例包含翻滚 RecyclerView、履行数据库查询,以及衡量代码中任何运转速度慢而您希望进步其运转速度的部分。
您能够在继续集成 (CI) 环境中运用此基准库,如在继续集成环境中运转基准所述。
假如在需求进行基准化剖析的项目中没有采用 AndroidX,请参阅运用 Android Studio 迁移现有项目。
快速入门
本节供给的简要步骤可帮助您尝试履行基准化剖析,而无需将代码移到模块中。因为这些步骤涉及停用调试功用以取得准确的功用成果,因而更改将不会提交至源代码控制体系中,但假如您想要履行一次性衡量,这样做仍然很有用。
如需快速履行一次性基准化剖析,请履行以下操作:
将基准库增加到模块的 build.gradle 文件中:
project_root/module_dir/build.gradle
GroovyKotlin
dependencies { androidTestImplementation 'androidx.benchmark:benchmark-junit4:1.1.0-alpha13' }
如需在测验清单中停用调试功用,请更新 元素以暂时强制停用调试功用,如下所示:
project_root/module_dir/src/androidTest/AndroidManifest.xml
android:debuggable="false" tools:ignore="HardcodedDebugMode" tools:replace="android:debuggable"/>
如需增加基准,请在 androidTest 目录下的测验文件中增加 BenchmarkRule 的实例。如需详细了解怎么编写基准,请参阅编写基准。
以下代码段展示了怎么将基准增加到 JUnit 测验中:
KotlinJava
@RunWith(AndroidJUnit4::class) class MyBenchmark { @get:Rule val benchmarkRule = BenchmarkRule() @Test fun benchmarkSomeWork() = benchmarkRule.measureRepeated { doSomeWork() } }
何时进行基准化剖析
主张您在编写基准之前先剖析代码功用。这有助于找到开支较高、值得优化的操作,并且还能够显示操作运转时发生的状况,然后提醒操作运转缓慢的原因。例如,详细原因或许包含运转操作所用的线程优先级较低、因访问磁盘而休眠,或意外调用高开支函数(例如位图解码)。
通过 TraceCompat API(或 -ktx 封装容器)增加自定义盯梢数据点,能够在 Android Studio CPU 功用剖析器或 Systrace 中进行查看:
KotlinJava
fun proccessBitmap(bitmap: Bitmap): Bitmap { trace("processBitmap") { // perform work on bitmap... } }
对哪些内容进行基准化剖析
基准化剖析最适用于运用中频繁运转的 CPU 作业,例如 RecyclerView 翻滚、数据转换/处理以及重复运用的代码段。
其他类型的代码较难以通过基准化剖析进行衡量。因为基准循环运转,因而任何不常常运转或在多次调用时以不同方法履行的代码都或许不合适进行基准化剖析。
缓存
尽量防止只衡量缓存。例如,某个自定义视图的布局基准或许只能衡量布局缓存的功用。为防止这种状况,您能够在每个循环中传递不同的布局参数。在其他状况下(例如在衡量文件体系功用时),这或许难以进行,因为操作体系会在循环中缓存文件体系。
不常常运转的代码
Android 运转时 (ART) 不太或许对仅在运用发动期间运转一次的代码进行 JIT 编译。因而,在严密循环运转此代码时通过微基准对其进行基准化剖析,并不是衡量此代码功用的有效方法。
如需对此类代码进行基准化剖析,咱们主张运用 Jetpack Macrobenchmark,它支持衡量更高等级的用户互动(例如运用发动和翻滚功用)。
完好的项目设置
如需针对惯例而非一次性的基准化剖析进行设置,您需求将基准分离到专门的模块中。这样可保证其装备(例如将 debuggable 设置为 false)与惯例测验分隔。
在增加基准模块之前,请将您要进行基准化剖析的代码和资源放入库模块中(假如没有放入)。
咱们的示例供给了有关怎么以这种方法设置项目的示例。
设置 Android Studio 特点
假如您运用的是 Android Studio 3.5,有必要手动设置 Android Studio 特点才干启用基准模块导游支持。Android Studio 3.6 或更高版本不需求手动设置。
如需启用 Android Studio 基准化剖析模板,请履行以下操作:
在 Android Studio 3.5 中,顺次点击 Help > Edit Custom Properties。
将以下行增加到随即翻开的文件中:
npw.benchmark.template.module=true
保存并关闭该文件。
重启 Android Studio。
创立新模块
基准化剖析模块模板会主动装备基准化剖析设置。
如需运用模块模板创立新模块,请履行以下操作:
右键点击您的项目或模块,然后顺次挑选 New > Module。
挑选 Benchmark Module,然后点击 Next。
图 1.基准模块
输入模块称号,挑选言语,然后点击 Finish。
一个针对基准化剖析进行了预先装备的模块即已创立完毕,其中增加了基准目录并已将 debuggable 设置为 false。
领取专属 10元无门槛券
私享最新 技术干货