第 9 章 · 性能优化 — 让 Gradle 飞起来

4 个互动演示:金字塔、时间对比、缓存命中、并行 vs 串行。

Gradle 性能优化金字塔

从下往上:开关 → 规范 → 定制。先打地基再装饰,别一上来就 Worker API。

Parallel + Daemon开关一翻就提速
Incremental Build声明 inputs/outputs
Build Cache本地 + 远程
Configuration Cache跳过配置阶段
Worker API / 自定义优化极端定制
点击金字塔查看每层的优化细节

真实优化案例:30 模块 Java 工程

从 5 分 12 秒 → 38 秒,每一步开了什么?

原始(什么都没开)
原始基线
5:12
+ Daemon + Parallel
-29%
3:40
+ Build Cache(本地)
-39% 又
2:15
+ 完善 Inputs/Outputs
-19% 又
1:50
+ Remote Cache(CI)
-41% 又
1:05
+ Configuration Cache
-42% 又
0:38
🎉 总效果:5:12 → 0:38,提速 8 倍!
关键点:没有改任何业务代码,只是开了开关 + 补了 inputs/outputs 注解。

Build Cache 命中演示

模拟在不同场景下,每个 task 的执行情况。

:lib-core:compileJava
EXECUTED
--
:lib-core:jar
EXECUTED
--
:feature-user:compileJava
EXECUTED
--
:feature-user:test
EXECUTED
--
:feature-order:compileJava
EXECUTED
--
:feature-order:test
EXECUTED
--
:app:compileJava
EXECUTED
--
:app:jar
EXECUTED
--
真正执行
8
缓存命中 (FROM-CACHE)
0
增量跳过 (UP-TO-DATE)
0
总耗时
90s
情景 1(默认显示):全新 clean build,所有 task 必须真正执行,缓存为空。

并行 vs 串行:节省时间一目了然

4 个互不依赖的子模块,总耗时对比。

串行执行(org.gradle.parallel=false)

main
user 4s
product 5s
order 4s
payment 3s
0s4s8s12s16s
🔴 总耗时 = 16 秒

并行执行(org.gradle.parallel=true)

worker-1
user 4s
worker-2
product 5s
worker-3
order 4s
worker-4
payment 3s
0s1s2s3s4s5s
🟢 总耗时 = 5 秒(最慢的那个) — 节省 69%

⚠️ 注意

  • 并行不是无脑越多越好,受 CPU 核数和 IO 限制
  • 有依赖关系的 task 不能并行(比如 user → core,必须先编 core)
  • 需要项目真正模块化,单模块巨石项目享受不到