RFR: 8329597: C2: Intrinsify Reference.clear
Aleksey Shipilev
shade at openjdk.org
Thu Jul 11 19:19:20 UTC 2024
On Thu, 11 Jul 2024 15:28:37 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:
> [JDK-8240696](https://bugs.openjdk.org/browse/JDK-8240696) added the native method for `Reference.clear`. The original patch skipped intrinsification of this method, because we thought `Reference.clear` is not on a performance sensitive path. However, it shows up prominently on simple benchmarks that touch e.g. `ThreadLocal` cleanups. See the bug for an example profile with `RRWL` benchmarks.
>
> Additional testing:
> - [x] Linux x86_64 server fastdebug, `all`
> - [ ] Linux AArch64 server fastdebug, `all`
On Mac AArch64, which suffers from both native call and WX transition:
Benchmark Mode Cnt Score Error Units
# Intrinsic OFF
ReferenceClear.phantom avgt 9 52,297 ? 0,294 ns/op
ReferenceClear.phantom_new avgt 9 57,075 ? 0,296 ns/op
ReferenceClear.soft avgt 9 52,567 ? 0,393 ns/op
ReferenceClear.soft_new avgt 9 57,640 ? 0,264 ns/op
ReferenceClear.weak avgt 9 53,018 ? 1,285 ns/op
ReferenceClear.weak_new avgt 9 57,227 ? 0,483 ns/op
# Intrinsic ON (default)
ReferenceClear.phantom avgt 9 0,780 ? 0,017 ns/op
ReferenceClear.soft avgt 9 0,784 ? 0,022 ns/op
ReferenceClear.weak avgt 9 0,793 ? 0,033 ns/op
ReferenceClear.phantom_new avgt 9 3,018 ? 0,015 ns/op
ReferenceClear.soft_new avgt 9 3,268 ? 0,014 ns/op
ReferenceClear.weak_new avgt 9 3,004 ? 0,057 ns/op
On x86_64 m7a.16xlarge, which only suffers from the native call:
Benchmark Mode Cnt Score Error Units
# Intrinsic OFF
ReferenceClear.phantom avgt 9 14.643 ± 0.049 ns/op
ReferenceClear.soft avgt 9 14.939 ± 0.438 ns/op
ReferenceClear.weak avgt 9 14.648 ± 0.081 ns/op
ReferenceClear.phantom_new avgt 9 19.859 ± 2.405 ns/op
ReferenceClear.soft_new avgt 9 20.208 ± 1.805 ns/op
ReferenceClear.weak_new avgt 9 20.385 ± 2.570 ns/op
# Intrinsic ON (default)
ReferenceClear.phantom avgt 9 0.821 ± 0.010 ns/op
ReferenceClear.soft avgt 9 0.817 ± 0.007 ns/op
ReferenceClear.weak avgt 9 0.819 ± 0.010 ns/op
ReferenceClear.phantom_new avgt 9 4.195 ± 0.729 ns/op
ReferenceClear.soft_new avgt 9 4.315 ± 0.599 ns/op
ReferenceClear.weak_new avgt 9 3.986 ± 0.596 ns/op
-------------
PR Comment: https://git.openjdk.org/jdk/pull/20139#issuecomment-2223248114
More information about the core-libs-dev
mailing list