RFR: improve warmup time for lambda capture
Sergey Kuksenko
sergey.kuksenko at oracle.com
Wed Aug 21 11:18:11 PDT 2013
Forget, that attachments may be erased.
Here is performance charts:
http://cr.openjdk.java.net/~skuksenko/jsr335/static_factory/
On 08/21/2013 08:41 PM, Sergey Kuksenko wrote:
> Hi,
>
> Please review the webrev at:
>
> http://cr.openjdk.java.net/~skuksenko/jsr335/static_factory/webrev.00/
>
> Also I need a sponsor to commit.
>
> The issue with lambda capture warmup is related to current jsr292
> implementation.
> Lambda metafactory creates call site which points to (MethodHandle)
> lambda generated class constructor. Invocation of the constructor is
> performed via some generated call chain (jsr292 implementation
> specific). When C1 or C2 compiles it - all these methods are inlined and
> code is clean, but interpretation is relatively slow. Such jsr292 call
> chain for static methods (MH to static method) is simpler than to
> constructor that is why it is warmed up faster.
> The patch generated static factory method for lambda capture in each
> generated class and links CallSite to the static factory method.
> Attached charts shows warmup improvement (both tiered and non-tiered
> compilation). The benchmark creates 4000 different lambdas, each lambda
> captures one variable.
> Of course this improvement is implementation specific and depends on
> jsr292 implementation. In future (when/if jsr292 will warmup MH to
> constructor with the same speed as MH to static method) we may revert it
> back.
>
>
>
>
>
>
--
Best regards,
Sergey Kuksenko
More information about the lambda-dev
mailing list