RFR: 8310813: Simplify and modernize equals, hashCode, and compareTo for BigInteger [v6]
Raffaello Giulietti
rgiulietti at openjdk.org
Thu Aug 10 11:36:58 UTC 2023
On Wed, 9 Aug 2023 22:36:47 GMT, Claes Redestad <redestad at 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/3425a24d...6fa3f694
>
> test/micro/org/openjdk/bench/java/math/Shared.java line 82:
>
>> 80: }
>> 81: int nBytes = (nBits + 7) / 8;
>> 82: var r = new Random();
>
> Some have a preference for providing a seed for `Random` instances in micros. Either hard-coded or through a `@Param` (I find this a bit excessive). Doing so might reduce run-to-run noise.
AFAIK, if you need reproducible randoms in tests, you should add the tags:
* @key randomness
* @library /test/lib
and initialize your random generator with
import jdk.test.lib.RandomFactory;
...
Random rnd = RandomFactory.getRandom();
This prints the seed to STDOUT.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/14630#discussion_r1289966641
More information about the core-libs-dev
mailing list