R8 如何让 Android 上的 Kotlin 协程速度提升 2 倍
Android 团队一直在致力于优化 Android 应用中协程的性能,尤其是使用 Kotlin 的应用。由于 kotlinx.coroutines 依赖的 kotlinx.atomicfu 库使用了 AtomicReferenceFieldUpdater,而该机制因反射检查带来显著开销,从而成为性能瓶颈。为解决这一问题,R8 编译器已更新,可将大多数 AtomicFieldUpdater 调用优化为 Unsafe 变体,从而实现 2 倍至 4 倍的性能提升。该优化自 AGP 9.2.0 及更高版本起可用,并对广泛使用协程的 Jetpack Compose 性能产生重大影响。该优化通过将 AtomicFieldUpdater 调用替换为 Unsafe 调用,消除了对反射检查的需求;R8 编译器可对这些调用进行静态优化,从而带来显著的性能提升。该优化已通过基准测试验证,显示协程性能提升 2 倍。此外,ART 团队正在致力于在虚拟机层面实现类似的优化,以进一步改善性能。该优化在默认启用 AGP 9.2.0 或更高版本时即可使用,也可直接与 R8 9.2.0 配合使用。性能提升显著,部分基准测试显示协程性能提升 2 倍。总体而言,该优化是提升使用协程和 Kotlin 的 Android 应用性能的重要一步。该优化已成功测试并实施,现已可在 Android 应用中使用。Android 团队持续致力于优化 Android 应用的性能,而此次优化正是这些努力的重要组成部分。