Java Reference
In-Depth Information
public interface Demo {
/**
* Implementation of generating primes up to a certain bitlength. The demo
* should generate each prime and then print it to standard out.
*/
void generatePrimesToBitLength(int bitLength);
}
/**
* Runs the demo {@link #RUN_COUNT} times and then prints the median time.
*
* @param demo The demo to run; never {@code null}
*/
public static void run(Demo demo) {
Objects.requireNonNull(demo, "demo");
long[] timings = new long[RUN_COUNT];
for (int i = 0; i < timings.length; i++) {
System.out.println("START ROUND " + (i+1));
long startTime = System.currentTimeMillis();
demo.generatePrimesToBitLength(MAX_BITLENGTH);
long endTime = System.currentTimeMillis();
timings[i] = endTime - startTime;
}
Arrays.sort(timings);
long medianTime = timings[timings.length / 2];
System.out.println("All timings: " + Arrays.toString(timings));
System.out.println("Median time: " + medianTime + "ms");
}
}
// Listing1.java
import java.math.BigInteger;
import java.util.*;
public class Listing1 {
public static void printPrimes(int maxBitLength) {
Random rand = new Random();
for (int i = 0; i < maxBitLength; i++) {
BigInteger prime = PrimeFactory.ofLength(i + 1, rand);
System.out.println(prime.toString());
}
}
public static void main(String[] args) {
DemoRunner.run(Listing1::printPrimes);
}
}
 
Search WWH ::




Custom Search