`jmod`/`jlink` are executed during build time to produce the `jmod` and the 
base modules image. On slow hardware (Raspberry Pi -class, for example) and/or 
slow VMs (debug, interpreter-only, for example) this takes a while. Profiling 
shows the considerable time is spent on hashing modules either for writing out 
the ModuleHash attribute or for verifying the hashes are good.

Those paths can be parallelized to make them quite faster.

The major contributors to module hashing are `java.base`, `jdk.desktop` and 
`jdk.localedata`, so we have a significant opportunity for parallelism here. 

Motivational improvements on `make clean-images images`:


# x86_64 Server, release

# Baseline
real    0m11.895s
user    1m4.526s
sys     0m10.715s

# Patched
real    0m10.701s   ; <--- 1.1x improvement
user    1m5.097s
sys     0m11.260s

# x86_64 Zero, release

# Baseline
real    5m20.335s
user    7m7.791s
sys     0m7.258s

# Patched
real    2m23.551s  ; <--- 2.23x improvement
user    7m14.442s
sys     0m7.856s


Additional testing: 
  - [x] Linux x86_64 fastdebug, `java/util/jar`
  - [x] Linux x86_64 fastdebug, `tools/jmod`
  - [x] Linux x86_64 fastdebug, `tools/jlink`
  - [x] Linux x86_64 fastdebug `tier1`

-------------

Commit messages:
 - Fix

Changes: https://git.openjdk.org/jdk/pull/10060/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=10060&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8293017
  Stats: 60 lines in 2 files changed: 40 ins; 10 del; 10 mod
  Patch: https://git.openjdk.org/jdk/pull/10060.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/10060/head:pull/10060

PR: https://git.openjdk.org/jdk/pull/10060

Reply via email to