0

eclipse 下自动构建的特性比./gradlew build快很多。

经过一些研究,我的发现是它只编译和构建更改的文件并将其替换到构建文件夹中。

那么为什么./gradlew build命令不能编译和构建已经更改的文件并将其替换到 build 文件夹中,并使整个构建过程更快。

我最近开始使用热插拔代理 + DCEVM 的自动构建功能。

4

1 回答 1

2

为什么 gradlew build 命令不能只编译和构建已更改的内容并使过程更快?

没有可靠的方法来确定需要重新编译的内容。例如,编译时常量被内联,并且在类文件中没有它们来自哪里的痕迹(它可以在源文件中找到,这意味着解析它们并浪费时间;它可以存储在一些辅助文件和一些工具可以做到)。

有关详细信息,请参阅本节的“限制”部分。

原因可能是他们没有通过 gradle 的配置步骤。

当然,但配置步骤通常不会花费那么长时间。

Eclipse 知道哪些文件已更改

好点(在holwgler的评论中)。


前段时间我花了一些时间试图让我的 gradle 编译更快,但我放弃了。Eclipse 的速度非常快,原因有很多:

  • 增量编译
  • 使用所有内核的多线程
  • 知道所有更改的文件
  • 让整个编译器代码由 JIT 优化
  • 可能缓存文件依赖项
  • 丑陋的高度优化的代码

我的“解决方案”忽略了这个问题。我在 Eclipse 中做所有事情,除了集成测试(它比编译花费的时间更长)和生产构建(它们很少见,所以我不在乎)。

您可能想阅读这些性能提示


要找出时间花在哪里,请使用

./gradlew clean; ./gradlew --profile jar

对我来说,90% 的时间只是:compileJava.

于 2020-01-04T19:29:07.390 回答