Unexpected behaviour when using Class.gerResource() with JDK ad hoc build
Alan Bateman
Alan.Bateman at oracle.com
Tue May 11 16:35:35 UTC 2021
On 11/05/2021 17:04, Сергей Цыпанов wrote:
> Hello
>
> I've run into performance drop-down when using Class.gerResource().
>
> When I run the following benchmark with JDK 16 downloaded from the internet
>
> @State(Scope.Benchmark)
> @BenchmarkMode(Mode.AverageTime)
> @OutputTimeUnit(TimeUnit.NANOSECONDS)
> @Fork(jvmArgsAppend = {"-Xms2g", "-Xmx2g"})
> public class ClassGetResourceBenchmark {
> private final Class<?> clazz = getClass();
>
> @Benchmark
> public URL getResource() {
> return clazz.getResource("/com/tsypanov/sbb/ClassGetResourceBenchmark.class");
> }
> }
>
> getResource() method takes about 2 us and consumes 1704 bytes.
>
> But then I take the code from https://github.com/openjdk/jdk and build it as
>
> ~ bash configure --with-boot-jdk=/home/s.tsypanov/.jdks/openjdk-16.0.1 --with-jtreg=/home/s.tsypanov/jtreg5
> ~ make images
>
> the same benchmark run on this ad hoc build takes 129 us and consumes 111506 bytes.
>
>
Can you check if you are using an exploded build? In the output directly
you need to configure the IDE to use images/jdk for an images-build.
Also part of the issue may be an IDE bug where it puts the directories
for all the system modules on the class path.
-Alan
More information about the core-libs-dev
mailing list