RFR: 8253525: Implement getInstanceSize/sizeOf intrinsics [v3]
Aleksey Shipilev
shade at openjdk.java.net
Mon Oct 19 06:57:24 UTC 2020
> This is fork off the SizeOf JEP, JDK-8249196. There is already the entry point in JDK that can use the intrinsic like
> this: `Instrumentation.getInstanceSize`. Therefore, we can implement the C1/C2 intrinsic now, hook it up to
> `Instrumentation`, and let the tools use that fast path today. With this patch, JOL is able to be close to
> `deepSizeOf` implementation from SizeOf JEP.
> Example performance improvements for sizing up a custom linked list:
>
> Benchmark (size) Mode Cnt Score Error Units
>
> # Default
> LinkedChainBench.linkedChain 1 avgt 5 705.835 ± 8.051 ns/op
> LinkedChainBench.linkedChain 10 avgt 5 3148.874 ± 37.856 ns/op
> LinkedChainBench.linkedChain 100 avgt 5 28693.256 ± 142.254 ns/op
> LinkedChainBench.linkedChain 1000 avgt 5 290161.590 ± 4594.631 ns/op
>
> # Instrumentation attached, no intrinsics
> LinkedChainBench.linkedChain 1 avgt 5 159.659 ± 19.238 ns/op
> LinkedChainBench.linkedChain 10 avgt 5 717.659 ± 22.540 ns/op
> LinkedChainBench.linkedChain 100 avgt 5 7739.394 ± 111.683 ns/op
> LinkedChainBench.linkedChain 1000 avgt 5 80724.238 ± 2887.794 ns/op
>
> # Instrumentation attached, new intrinsics
> LinkedChainBench.linkedChain 1 avgt 5 95.254 ± 0.808 ns/op
> LinkedChainBench.linkedChain 10 avgt 5 261.564 ± 8.524 ns/op
> LinkedChainBench.linkedChain 100 avgt 5 3367.192 ± 21.128 ns/op
> LinkedChainBench.linkedChain 1000 avgt 5 34148.851 ± 373.080 ns/op
Aleksey Shipilev has refreshed the contents of this pull request, and previous commits have been removed. The
incremental views will show differences compared to the previous content of the PR. The pull request contains one new
commit since the last revision:
8253525: Implement getInstanceSize/sizeOf intrinsics
-------------
Changes:
- all: https://git.openjdk.java.net/jdk/pull/650/files
- new: https://git.openjdk.java.net/jdk/pull/650/files/d744a913..6160f6a8
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=jdk&pr=650&range=02
- incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=650&range=01-02
Stats: 2 lines in 1 file changed: 2 ins; 0 del; 0 mod
Patch: https://git.openjdk.java.net/jdk/pull/650.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/650/head:pull/650
PR: https://git.openjdk.java.net/jdk/pull/650
More information about the serviceability-dev
mailing list