On Tue, 26 Apr 2022 19:30:31 GMT, Jorn Vernee <jver...@openjdk.org> wrote:
>> Right.. I did a quick experiment and there's a large speed-up in the trivial >> `methodType(obj, obj)` case: >> >> Benchmark Mode Cnt Score Error >> Units >> MethodTypeAcquire.testObjectObjectNonConstant avgt 5 30.052 ? 3.440 >> ns/op # baseline >> MethodTypeAcquire.testObjectObjectNonConstant avgt 5 1.171 ? 0.001 >> ns/op # patch >> >> >> I'll add a non-constant variant for the multi-arg Object variants, too. It >> should scale linearly and see a gain in the same ballpark. I think we need >> to keep the number of microbenchmarks here somewhat under control, though. > > That sounds good, thanks Added 3 micros I think carry their own weight as they assess some different major pathways through the caching fast-path. Baseline: Benchmark Mode Cnt Score Error Units MethodTypeAcquire.testMultiPType_ObjectAndA_NonConst avgt 15 63.523 ? 2.452 ns/op MethodTypeAcquire.testMultiPType_ObjectOnly_NonConst avgt 15 57.770 ? 0.501 ns/op MethodTypeAcquire.testObjectObject_NonConst avgt 15 30.090 ? 0.251 ns/op Patched: Benchmark Mode Cnt Score Error Units MethodTypeAcquire.testMultiPType_ObjectAndA_NonConst avgt 15 64.570 ? 0.410 ns/op MethodTypeAcquire.testMultiPType_ObjectOnly_NonConst avgt 15 4.735 ? 0.063 ns/op MethodTypeAcquire.testObjectObject_NonConst avgt 15 1.171 ? 0.001 ns/op The relative speed-up diminishes a bit for the loopy 6-arg `methodType` calls, but is still a healthy 12x. Overhead on the negative test might be there but is very much in the noise on my tests (tried doubling warmup time to no avail) ------------- PR: https://git.openjdk.java.net/jdk/pull/8398