RFR: 8275821: Optimize random number generators developed in JDK-8248862 using Math.unsignedMultiplyHigh() [v4]

Paul Sandoz psandoz at openjdk.java.net
Thu Dec 2 23:06:17 UTC 2021


On Thu, 2 Dec 2021 20:43:56 GMT, Vamsi Parasa <duke at openjdk.java.net> wrote:

>> This change optimizes random number generators using Math.unsignedMultiplyHigh()
>
> Vamsi Parasa has updated the pull request incrementally with one additional commit since the last revision:
> 
>   add seeds for the random generators to eliminate run-to-run variance

Looks good. Some comments on the benchmark.

test/micro/org/openjdk/bench/java/util/RandomGeneratorNext.java line 57:

> 55:         rngL128X128MixRandom = RandomGeneratorFactory.of("L128X128MixRandom").create(42);
> 56:         rngL128X256MixRandom = RandomGeneratorFactory.of("L128X256MixRandom").create(174);
> 57:         rngL128X1024MixRandom = RandomGeneratorFactory.of("L128X1024MixRandom").create(308);

You can declare parameters:


@Param({"L128X128MixRandom", "L128X256MixRandom", "L128X1024MixRandom"})
String randomGeneratorName;

@Param("1024")
int size;

long[] buffer;
RandomGenerator randomGenerator;


@Setup
public void setup() {
    buffer = new long[size];
    randomGenerator = RandomGeneratorFactory.of(randomGeneratorName)
        .create(randomGeneratorName.hashCode());
}


Then you can simplify to just two benchmark methods. Further, the benchmark can be used for other PRNGs.

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

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


More information about the core-libs-dev mailing list