gpt4 book ai didi

java - 许多小模块,还是几个大模块以获得最佳构建性能?

转载 作者:IT老高 更新时间:2023-10-28 13:46:00 25 4
gpt4 key购买 nike

几年前,当我第一次为 Android 采用 gradle 时(在 Gradle 2.0 之前),我发现使用和依赖一个模块会有一些开销,所以我一直没有将我的项目拆分成更小的模块,并且而是创建了非常大的模块。在尝试了其他一些构建系统(例如 Buck)之后,通过将代码拆分为多个小模块来获得性能。一些现代编程语言(如 Kotlin)甚至具有专门围绕将代码拆分为模块的概念构建的可见性修饰符。

我们目前处于 Gradle 2.14.1(几乎是 3.0),在过去的几个版本中,他们引用了巨大的性能提升。随着过去几年对 Gradle/Android 插件的更改,它现在是否可以生成更快的构建以将您的代码拆分为更小的模块,或者使用更少的大模块?

最佳答案

对于 Gradle 和 Kotlin,近期整体构建的编译性能都有很大提升。包括降低构建中多个模块的开销。

您可以在最近的这篇文章中看到这些增加的一些示例:Kotlin vs. Java Compilation Speeds

多个模块之间的开销通过组合 Gradle 的配置步骤来减少模块的数量级更快,并通过在内存中保留更多以便不必在每次编译运行时重新加载,并且不编译那些细粒度的依赖检查认为不需要重新编译。

以下是提示:

  • 确保 Gradle 守护程序已启用(现在默认启用,因此除非您将其关闭,否则一切正常)
  • 升级到 Kotlin 1.0.3(并留意即将发布的 1.0.4)
  • 启用 incremental Kotlin compilation :

    To enable incremental compilation for Gradle, you need to set the kotlin.incremental property to true (for example, by adding the line kotlin.incremental=true to the gradle.properties file in the root directory of your project).

  • 使用 Android Studio 2.1 或更新版本和 enable DEX in Process

    Android Studio 2.1 enables a new feature: Dex In Process, that can dramatically increase the speed of full clean builds as well as improving Instant Run performance.

  • 确保您使用的任何任务都支持在 Gradle 中增量运行,有些不支持并且会减慢构建时间(例如 Dokka 任务运行,无论发生什么变化),您可以禁用所有不需要的任务使用时间-x<task> Gradle 的参数。

现在,无论是多模块构建还是单模块构建更快,我现在发现未更改的模块的开销可以忽略不计。而对于那些有的,编译成本是正常的。

请注意,由于 Android plugin for Gradle changing the classpath ordering between builds,Gradle 中的 Android 构建之间的增量编译并不总是有效。 .尽管这在构建之间往往是一致的,但如果它重新计算类路径,它可能会是一个不同的顺序并导致一个新的完整构建。但无论您是构建单个模块还是多个模块,这都是一个问题。

您的问题的总体答案可能因项目、硬件、不同配置和人们的看法,甚至误用和错误配置而大相径庭。鉴于上述改进,您必须决定花时间测试您实际项目的当前状态 - 并亲自看看!

关于java - 许多小模块,还是几个大模块以获得最佳构建性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39059602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com