我使用Cordova CLI来构建我的混合Android应用程序。为了加快编译速度,我将整个Android安装转移到了SSD上,并给我的机器增加了8 8Gb的内存(总共16 8Gb)。然而,我认为对编译时间的影响为零,因为在这些升级之前,编译时间与之前几乎相同。我开始怀疑仅仅提供更多的资源是不够的。不知何故,Gradle需要被告知使用它们。然而,我不确定如何在混合Cordova应用程序的上下文中做到这一点。
根据我在this Reddit thread中找到的想法,我在app/platforms/android文件夹中创建了一个gradle.properties文件
org.gradle.parallel=true
org.gradle.daemon=true
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xms2048m -Xmx8096m -XX:PermSize=1024
-XX:MaxPermSize=1024m -XX:ReservedCodeCacheSize=1024m这确实产生了影响--它使构建速度降低了近50%!使用新的Gradle守护进程的第一次构建通常比较慢,所以我重新编译了。虽然节省了一些成本,但构建速度仍然比以前慢。显然,配置Gradle不仅仅是让它使用大量的内存。然而,我在这个领域没有经验。这里有没有人可以告诉我,为了获得一些真正的性能优势,我应该如何进行这个过程?
发布于 2018-03-30 23:32:27
我最近正在调优Jenkins管道,并将一个应用程序从Maven迁移到Gradle,所以我希望我的知识可能会对我有所帮助。
首先,您可以通过以下方式测量执行时间的差异:
.gradle文件夹。它是Gradle的缓存文件夹,可能会被意外使用。gradle --stop。它将停止gradle clean build守护进程,这样守护进程本身中的缓存就不会被使用。
其次,您所获得的收益主要来自于使用org.gradle.parallel=true。您可以尝试删除其他东西,我打赌性能不会有显着变化。org.gradle.daemon=true是该选项的默认值。另外,我会修改JVM标志,比如-XX:MaxPermSize在Java8中没有使用(尽管我知道你在开发Android app)
第三,关于加速编译本身,你可以使用这个标志:
GRADLE_OPTS="-XX:+TieredCompilation -XX:TieredStopAtLevel=1"它应该关闭JVM分析,这样才能帮您完成任务。
第三,比较compile和implementation。从理论上讲,使用implementation配置可以加快编译和重新编译过程,因为它不使用传递依赖。
我想我不知道其他方法来加速Gradle项目的编译。然而,如果你对加速整个构建感兴趣的话,还是有一些像并行测试执行这样的事情。
最后一点:检查你的插件。有时,它们会做一些你并不真正需要的事情(我的瓶颈是wsdl2java),例如复制许多未使用的生成源代码。
希望它能帮上忙!
发布于 2018-03-31 03:19:03
将项目的build文件夹移到SSD:在构建过程中有大量的写操作,写总是比读慢得多。
并配置杀毒软件(如果有)以从扫描中排除所有java二进制文件、项目的build文件夹和~/.gradle。
这两个操作应该足以看出差异。
https://stackoverflow.com/questions/49535699
复制相似问题