On Mon, 22 Nov 2021 15:53:53 GMT, Claes Redestad <redes...@openjdk.org> wrote:

> FWIW I did a few experiments trying to move the chunking to `SCF`. Most made 
> things worse, but this is getting close: 
> https://github.com/openjdk/jdk/compare/master...cl4es:scf_split?expand=1
> 
> The threshold for when the JIT fails to optimize seem to be pushed up a bit 
> and I get a 4x gains when concatenating 100 Strings (though it takes a good 
> while for the microbenchmark to stabilize). It also fails to make much of a 
> difference when looking at 200 arguments (maybe 1.4x win). The experiment I 
> have done so far are crude and aggregates the results into a String builder 
> with no size estimation, so it adds a but of unnecessary allocation that 
> could be improved. I think this needs way more work to be a good enhancement 
> and that splitting up outside is going to remain better for now.
> 
> A "hidden" drawback with chunking is that you're likely going to be 
> allocating more.
> 
> I also re-realized that it'll be pretty hard (or impossible) to get around 
> having some MH slot limit: even though we chunk it up internally, the MH we 
> return must have a type that matches the type given to the bootstrap method, 
> and any operations on the tree that require some temporary arguments we need 
> to pass around will require some argument slots. The current strategy doesn't 
> use too many temporaries, so the real limit might be around 250, but it makes 
> sense to give some room for alternative implementations that use more 
> temporaries if that makes things more efficient.

Thanks for sharing this and for doing the experiment!

-------------

PR: https://git.openjdk.java.net/jdk/pull/6403

Reply via email to