On Tue, 8 Mar 2022 17:01:09 GMT, Claes Redestad <redes...@openjdk.org> wrote:

>> Can we change the optimizer so that the strength reduction happens only 
>> after all transformations have settled? Carelessly changing a multiplication 
>> to a shift as today may hurt a lot of potential optimisations.
>> Thanks.
>
>> Can we change the optimizer so that the strength reduction happens only 
>> after all transformations have settled? Carelessly changing a multiplication 
>> to a shift as today may hurt a lot of potential optimisations. Thanks.
> 
> Yes, it's troubling that making a constant non-foldable can lead the JIT down 
> a path that ultimately pessimizes the end result (as observed here). If we 
> could train the JIT to avoid this pitfall and get to the improvement observed 
> in my experiment here without any changes to `String.java` then that'd be 
> great.

> @cl4es Yes, we would need to carefully measure the impact for small array 
> sizes (similar to what we had to do when the array mismatch intrinsic was 
> implemented and applied to array equals). My sense is to focus on the 
> intrinsic and also look for potential opportunities like @merykitty points 
> out, as that is where the larger impact is, although it is more work!

Right, I'm not too thrilled about the prospect of moving ahead with the 
de-constantification as an alternative patch here. It's such a crutch, but it's 
also simple and has no obvious downsides as of right now. I think it was a 
useful experiment to see where some of the gain observed in the unroll might be 
coming from. The degradation on many smaller `Strings` in the unrolled versions 
is a concern that I think might be a blocker, though. Short Strings are 
excessively common as keys in hash maps et.c.. 

Feels like none of the alternatives seen here so far is really _it_.

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

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

Reply via email to