RFR: 8260337: Optimize ImageReader lookup, used by Class.getResource
Claes Redestad
redestad at openjdk.java.net
Mon Jan 25 15:30:52 UTC 2021
On Mon, 25 Jan 2021 00:05:52 GMT, Claes Redestad <redestad at openjdk.org> wrote:
> This patch optimizes the code paths exercised by `String.class.getResource("String.class")` by:
>
> - Adding an ASCII fast-path to methods verifying strings in the jimage, which can then be done allocation-free
> - Avoiding the allocation of the `long[8]` attributes when verifying only for the purpose of verifying a path exists
> - Using the `JNUA.create` fast-path in `SystemModuleReader` (which should be OK since we just verified the given name is a JRT path)
> - Remove a redundant check in `Class::resolveName` and fitting the `StringBuilder` to size
On the provided benchmark we can observe a 2x speed-up and a 70% reduction in allocation.
Baseline:
Benchmark Mode Cnt Score Error Units
ClassGetResource.stringClass avgt 5 2885.403 ± 309.787 ns/op
ClassGetResource.stringClass:·gc.alloc.rate.norm avgt 5 1368.124 ± 0.056 B/op
Patch:
Benchmark Mode Cnt Score Error Units
ClassGetResource.stringClass avgt 5 1411.980 ± 155.877 ns/op
ClassGetResource.stringClass:·gc.alloc.rate.norm avgt 5 408.038 ± 0.043 B/op
-------------
PR: https://git.openjdk.java.net/jdk/pull/2212
More information about the core-libs-dev
mailing list