< prev index next >

test/micro/org/openjdk/bench/java/math/BigIntegers.java

Print this page

        

*** 43,60 **** @BenchmarkMode(Mode.AverageTime) @OutputTimeUnit(TimeUnit.NANOSECONDS) @State(Scope.Thread) public class BigIntegers { ! private BigInteger[] hugeArray, largeArray, smallArray; public String[] dummyStringArray; public Object[] dummyArr; private static final int TESTSIZE = 1000; @Setup public void setup() { Random r = new Random(1123); hugeArray = new BigInteger[TESTSIZE]; /* * Huge numbers larger than * MAX_LONG */ --- 43,61 ---- @BenchmarkMode(Mode.AverageTime) @OutputTimeUnit(TimeUnit.NANOSECONDS) @State(Scope.Thread) public class BigIntegers { ! private BigInteger[] hugeArray, largeArray, smallArray, shiftArray; public String[] dummyStringArray; public Object[] dummyArr; private static final int TESTSIZE = 1000; @Setup public void setup() { Random r = new Random(1123); + int numbits = r.nextInt(16384); hugeArray = new BigInteger[TESTSIZE]; /* * Huge numbers larger than * MAX_LONG */
*** 65,74 **** --- 66,79 ---- */ smallArray = new BigInteger[TESTSIZE]; /* * Small number less than * MAX_INT */ + shiftArray = new BigInteger[TESTSIZE]; /* + * Each array entry is atmost 16k bits + * in size + */ dummyStringArray = new String[TESTSIZE]; dummyArr = new Object[TESTSIZE]; for (int i = 0; i < TESTSIZE; i++) {
*** 76,85 **** --- 81,91 ---- hugeArray[i] = new BigInteger("" + ((long) value + (long) Integer.MAX_VALUE) + ((long) value + (long) Integer.MAX_VALUE)); largeArray[i] = new BigInteger("" + ((long) value + (long) Integer.MAX_VALUE)); smallArray[i] = new BigInteger("" + ((long) value / 1000)); + shiftArray[i] = new BigInteger(numbits, r); } } /** Test BigInteger.toString() with huge numbers larger than MAX_LONG */ @Benchmark
*** 135,140 **** --- 141,180 ---- } tmp = tmp.add(s); } bh.consume(tmp); } + + /** Invokes the shiftLeft method of BigInteger with different values. */ + @Benchmark + @OperationsPerInvocation(TESTSIZE) + public void testLeftShift(Blackhole bh) { + Random rand = new Random(); + int shift = rand.nextInt(30) + 1; + BigInteger tmp = null; + for (BigInteger s : shiftArray) { + if (tmp == null) { + tmp = s; + continue; + } + tmp = tmp.shiftLeft(shift); + } + bh.consume(tmp); + } + + /** Invokes the shiftRight method of BigInteger with different values. */ + @Benchmark + @OperationsPerInvocation(TESTSIZE) + public void testRightShift(Blackhole bh) { + Random rand = new Random(); + int shift = rand.nextInt(30) + 1; + BigInteger tmp = null; + for (BigInteger s : shiftArray) { + if (tmp == null) { + tmp = s; + continue; + } + tmp = tmp.shiftRight(shift); + } + bh.consume(tmp); + } }
< prev index next >