package de.invesdwin.util.math.random; import javax.annotation.concurrent.NotThreadSafe; import org.apache.commons.math3.random.RandomGenerator; import org.junit.Ignore; import org.junit.Test; import de.invesdwin.util.time.Instant; import de.invesdwin.util.time.duration.Duration; import it.unimi.dsi.util.XoRoShiRo128PlusRandomGenerator; @Ignore("manual test") @NotThreadSafe public class RandomGeneratorsTest { @Test public void testPerformance() { testRandomGenerator("Xoroshiro", new XoRoShiRo128PlusRandomGenerator()); testRandomGenerator("ThreadLocalRandom", RandomGenerators.currentThreadLocalRandom()); } private Duration testRandomGenerator(final String name, final RandomGenerator random) { final Instant start = new Instant(); for (long i = 0; i < 10000000000L; i++) { random.nextDouble(); } final Duration duration = start.toDuration(); //CHECKSTYLE:OFF System.out.println(name + ": " + duration); //CHECKSTYLE:ON return duration; } }