On Thu, 10 Aug 2023 11:38:08 GMT, Pavel Rappo <pra...@openjdk.org> wrote:

>> Pavel Rappo has updated the pull request with a new target base due to a 
>> merge or a rebase. The incremental webrev excludes the unrelated changes 
>> brought in by the merge/rebase. The pull request contains 13 additional 
>> commits since the last revision:
>> 
>>  - Fix bugs in Shared.createSingle
>>  - Merge branch 'master' into 8310813
>>  - Group params coarser (suggested by @cl4es)
>>    
>>    - Splits 20 params into 3 groups: (S)mall, (M)edium and (L)arge.
>>      Every testXYZ method invokes M operations, where M is the maximum
>>      number of elements in a group. Shorter groups are cyclically padded.
>>    - Uses the org.openjdk.jmh.infra.Blackhole API and increases
>>      benchmark time.
>>    - Fixes a bug in Shared that precluded 0 from being in a pair.
>>  - Use better overloads (suggested by @cl4es)
>>    
>>    - Uses simpler, more suitable overloads for the subrange
>>      starting from 0
>>  - Improve benchmarks
>>  - Merge branch 'master' into 8310813
>>  - Restore hash code values
>>    
>>    BigInteger is old and ubiquitous enough so that there might be
>>    inadvertent dependencies on its hash code.
>>    
>>    This commit also includes a test, to make sure hash code is
>>    unchanged.
>>  - Merge branch 'master' into 8310813
>>  - Add a benchmark
>>  - Merge branch 'master' into 8310813
>>  - ... and 3 more: https://git.openjdk.org/jdk/compare/3619ef21...6fa3f694
>
> Here's a status update for this PR. I'm currently benchmarking baseline 
> against this PR and this PR plus changes in 
> https://github.com/openjdk/jdk/pull/15197. It's a 3-way benchmark, so to 
> speak. Its purpose is to see whether performance degradation brought by this 
> PR to `equals` and `compareTo` can be sufficiently offset by the improved 
> `ArraysSupport.mismatch` mechanics.

Some context: On the `equals` and `compareTo` microbenchmarks @pavelrappo is 
adding in this PR there's a tiny regression from using `ArraysSupport.mismatch` 
when the `value` array has just a single element. Since such small 
`BigInteger`s appears to be exceedingly common (huh) it's been deemed hard to 
brush aside. Still this regression comes from the code having some extra 
branch, and is less than 2ns/op. All the while the speedup on huge 
`BigInteger`s is substantial. 

I think it's reasonable to move forward with this patch and accept the tiny 
regression on `equals/hashCode` with a magnitude of 1 (like we've done in other 
places such as `String.startsWith`) and separately continue investigating if 
`ArraysSupport.mismatch` can be improved to remove this deficiency.

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

PR Comment: https://git.openjdk.org/jdk/pull/14630#issuecomment-1674582483

Reply via email to