Looking for Sponsor: JDK-8229959 Convert proxy class to use constant dynamic
Brian Goetz
brian.goetz at oracle.com
Sat Nov 23 20:19:57 UTC 2019
> I just finished the first prototype, which can be found at
> https://gist.github.com/DasBrain/7766bedfbc8b76ba6a0ee66a54ba97ed - it
> contains a patch, the javap output of a generated proxy class with and
> without that patch, and the code I used to dump the proxy class. "make
> run-test-tier1" passes all JDK tests with the patch. I hope this will
> help the discussion a bit.
Good start.
> https://mail.openjdk.java.net/pipermail/core-libs-dev/2019-August/061923.html
>
>
> But there were never a real discussion about the benefits yet. It's
> good that we have one now.
>
> As I am a novice JMH user, I don't trust myself to write good
> benchmarks that actually measure what I want to measure, not confirm
> what I would like it to be
Right, I think that's the next step. You need to design an experiment
to measure the cost of the <clinit> here. I suspect the best way is to
lift that work to an instance method (one that just overwrites the
fields), and benchmark that, for various numbers of reflective calls.
Then we can separately measure the cost of spinning the bytecode for a
proxy, and of loading the class from a cached byte[]. This will give us
a sense of the relative costs of the various pieces, to validate that
reducing the <clinit> cost is relevant.
Finally, we can benchmark the current approach against the LDC approach
on a per-Method basis. The LDC approach may well be doing more work per
Method, so it's a tradeoff to determine whether deferring that work is a
win.
More information about the core-libs-dev
mailing list