Android安卓进阶之——相比 Groovy 脚本, KTS 性能到底怎么样?

编程之家收集整理的这篇文章主要介绍了Android安卓进阶之——相比 Groovy 脚本, KTS 性能到底怎么样?编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

前言

大家肯定也都或多或少的写过一些Groovy代码,但由于不支持代码提示及编译时检查,使用Groovy开发的体验并不太好,Android Gradle插件4.0之后支持在Gradle构建配置中使用Kotlin 脚本 (KTS),用于替代 Groovy(过去在 Gradle 配置文件中使用的编程语言)。

KTS 比 Groovy 更适合用于编写 Gradle 脚本,因为采用 Kotlin 编写的代码可读性更高,并且 Kotlin 提供了更好的编译时检查和 IDE 支持

但是文档中也提到了,虽然与 Groovy 相比,KTS 当前能更好地在 Android Studio代码编辑器中集成,但采用 KTS 的构建速度往往比采用 Groovy 慢,因此在迁移到 KTS 时应考虑构建性能

那么我们今天就来看下相比Groovy,KTS性能到底怎么样?为大家决定是否迁移到KTS提供一定的参考。

KTS性能分析

性能分析工具

要分析KTS的性能,我们首先需要稳定的测量编译的时间,编译速度可能受build cache等多种因素的影响,所以很难测量kts插件性能的影响到底有多大

我们可以使用Gradle 性能剖析器来准确测量性能,这是一款用于收集 Gradle 构建的性能分析和基准化分析信息的工具。借助 Gradle性能剖析器,您可以创建构建场景并多次运行这些场景,以防止结果出现过大差异,并确保结果的可重现性。

基准化分析的部分项目设置配置包括

  • 插件版本
  • Gradle 版本
  • JVM 设置(堆大小、永久代大小、垃圾回收等)
  • Gradle 工作器数量 (org.gradle.workers.max)
  • 插件选项进一步优化性能

比如我们需要对clean build进行基准化分析,您可以创建一个gradle-profiler执行的场景:

# <root-project>/scenarios.txt

clean\_build {

    tasks = [":app:assembleDebug"]

    cleanup-tasks = ["clean"]

}

如需运行此场景,请使用以下命令:

gradle-profiler --benchmark --project-dir <root-project> --scenario-file scenarios.txt

通过以上命令,就可以多次运行clean build,并生成clean build性能报告。除了clan build,gradle-profiler还可以针对增量编译,不同的 Gradle 插件版本,以及不同的内存/cpu 等执行性能分析。

通过gradle-profile命令,可以创建构建场景并多次运行,可以防止结果出现过大差异,并确保结果的可重现性,以帮助我们更好地分析性能

关于gradle-profile的具体使用,可以参考文档:分析构建性能

Gradle 6.8 版本性能分析

针对Gradle 6.8版本,我们从以下4个用例来分析KTS性能

  • 首次运行(即清除所有build cache)
  • buildSrc abi 更改(支持的abi发生变化,可以理解为大多数缓存失效,大部分代码需要重新编译)
  • buildSrc 非 abi 更改(即buildSrc中的普通修改)
  • 无改动

以下数据来自在Gradle CI上运行的性能测试。这些测试运行在一个包含大量subProject的大型项目中,并且它们在 Groovy 和 Kotlin DSL 上运行以进行比较。

Use case

Groovy

Kotlin

Differences

First use

总结

以上是编程之家为你收集整理的Android安卓进阶之——相比 Groovy 脚本, KTS 性能到底怎么样?全部内容。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给好友。

原文地址:https://cloud.tencent.com/developer/article/1959689

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

Android相关文章

实现注册界面的布局效果,包含用户名,密码,忘记密码,登录等控件
Android App开发实战之实现微信记账本功能(附源码 超详细必看)
前言首先看一下小米中的加载动画是怎么样的,恩恩~~~~虽然只是张图片,因为录制不上全部,很多都是刚一加载就成功了,一点机会都不提供给我,所以就截了一张图,他这个加载动画特点就是左面圆圈会一直转。仿照的效果如下:实现过程这个没有难度,只是学会一个公式就可以,也就是已知圆心,半径,角度,求圆上的点坐标,算出来的结果在这个点绘制一个实心圆即可,下面是自定义Dialog,让其在底部现实,其中的View也是自定义的一个。class MiuiLoadingDialog(conte
作者:徐宜生Flutter布局千千万,虽然Box模型相比于原生布局来说,在大部分场景下都是更加方便了,但是有些场景,确实还是ConstraintLayout来的更方便一点,例如下面这个场景:「将不定长度的角标,放置于容器右上角,同时角标中心和容器角顶点对齐」,这其实是一个常见的需求,几乎在UI中的角标场景下都会用到,只不过大部分时候,直接写死一个差不多的偏移量,用Stack就可以实现了,但如果要求特别精准,Flutter的自带Widget就无法满足需求了(通过Key计算的方式就不说了,有点太浪费性能了.
前言作为 Android 开发,平时和后端聊得最多的除了喝酒就是接口。常用语:Restful&nbsp;和&nbsp;WebService,前者现在聊得多,后者以前聊得多。默认含义分别为:Restful:HTTP 协议 和 JSON 格式WebService:特指 Soap 协议 和 XML 格式针对基于 HTTP 协议且格式为 JSON 的 Restful 接口,Android 客户端一般采用&nbsp;Retrofit + Gson/Moshi&nbsp;的方案解决。而针对 Soap 协
作者:业志陈Handler 在整个 Android 开发体系中占据着很重要的地位,是一种标准的事件驱动模型,对开发者来说起到的作用很明确,就是为了实现线程切换或者是执行延时任务,稍微更高级一点的用法可能是为了保证多个任务在执行时的有序性。由于 Android 系统中的主线程有特殊地位,所以像 EventBus 和 Retrofit 这类并非 Android 独有的三方库,都是通过 Handler 来实现对 Android 系统的特殊平台支持。大部分开发者都已经对如何使用 Handler 很熟悉了,这里.
作者:长安皈故里本篇文章主要是讲解HanderThread基本使用以及内部实现原理,读者需要对Android的消息机制有一定的知识基础。HanderThread基本使用fun hdUse() { val handlerThread = HandlerThread("ChapterActivity", 100) handlerThread.start() val handler = Handler(handlerThread.looper) { msg -&gt; .
以前一直想写一篇总结 Android开发经验的文章,估计当时的我还达不到某种水平,所以思路跟不上,下笔又捉襟见肘。近日,思路较为明朗,于是重新操起键盘开始整理一番。首先要声明的是,本人是某一线互联网大厂的面试官,下面总结的方式更多的是以面试为主。目录简要由于篇幅限制就只能以截图主要内容的方式展示出来了,可以直接转发+关注后私信(面试)即可获取哦!部分内容展示公共技术点Binder算法面试合集常见原理性面试题悲观锁