RFR: 8298920: Improve microbenchmark build times
Daniel Jeliński
djelinski at openjdk.org
Mon Aug 19 20:05:48 UTC 2024
On Fri, 16 Aug 2024 12:24:19 GMT, Jan Lahoda <jlahoda at openjdk.org> wrote:
> Currently incremental builds for the microbenchmarks may take notable amount of time, like:
>
> $ touch test/micro/org/openjdk/bench/java/io/BlackholedOutputStream.java; time make test TEST=jaxp:tier1
> Building target 'test' in configuration 'linux-x86_64-server-release'
> Compiling up to 656 files for BUILD_JDK_MICROBENCHMARK
> Running Indify on microbenchmark classes
> [snip]
> ==============================
> Test summary
> ==============================
> TEST TOTAL PASS FAIL ERROR
> jtreg:test/jaxp:tier1 0 0 0 0
> ==============================
> TEST SUCCESS
>
> Finished building target 'test' in configuration 'linux-x86_64-server-release'
>
> real 0m37,581s
> user 2m4,747s
> sys 0m7,223s
>
>
> The microbenchmark compilation is not using the `Depend` plugin that avoids recompilation of other files if the change files only contain minor changes (i.e. non-API changes). The patch here proposes to enhance the build to use the `Depend` plugin. The change that enables that is `CREATE_API_DIGEST := true,`, but since both the `Depend` plugin and JMH framework needs to be added to the classpath the patch re-organizes the code a little to properly augment the classpath.
>
> With this patch, a build similar to the above might be:
>
> $ touch test/micro/org/openjdk/bench/java/io/BlackholedOutputStream.java; time make test TEST=jaxp:tier1
> Building target 'test' in configuration 'linux-x86_64-server-release'
> Compiling up to 656 files for BUILD_JDK_MICROBENCHMARK
> Running Indify on microbenchmark classes
> [snip]
> ==============================
> Test summary
> ==============================
> TEST TOTAL PASS FAIL ERROR
> jtreg:test/jaxp:tier1 0 0 0 0
> ==============================
> TEST SUCCESS
>
> Finished building target 'test' in configuration 'linux-x86_64-server-release'
>
> real 0m7,505s
> user 0m14,128s
> sys 0m3,158s
Wait, something is off here:
$ touch test/micro/org/openjdk/bench/javax/crypto/full/AESGCMBench.java;time make test TEST=jaxp:tier1
Building target 'test' in configuration 'windows-x86_64-server-release'
Compiling up to 656 files for BUILD_JDK_MICROBENCHMARK
C:...\test\micro\org\openjdk\bench\javax\crypto\full\AESGCMBench.java:36: error: cannot find symbol
public class AESGCMBench extends BenchBase {
^
symbol: class BenchBase
1 error
-------------
Changes requested by djelinski (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/20616#pullrequestreview-2246361916
More information about the build-dev
mailing list