package common.handeval.klaatu;
import java.text.DecimalFormat;
public class BulkTests {
private static final int TRIALS = 15000000;
public static void runtests(int trials, long overhead) {
Deck d = new Deck();
long ts = System.currentTimeMillis();
for (int i = 0; i < trials; i++) {
if ((i + 1) % 1000000 == 0) {
System.out.println((System.currentTimeMillis() - ts) + "ms, evaluated " + ((i + 1) / 1000000) + " million hands");
}
int[] cards = d.getCards();
FastEval.eval7(cards[0], cards[1], cards[2], cards[3], cards[4], cards[5], cards[6]);
}
ts = System.currentTimeMillis() - ts;
DecimalFormat df = new DecimalFormat("#");
double ps = (double) trials / ((double) ts / (double) 1000);
System.out.println("with overhead: " + trials + " trials, " + ts + "ms elapsed, " + df.format(ps) + " trials per second");
long actual = ts - overhead;
ps = (double) trials / ((double) actual / (double) 1000);
System.out.println("without overhead: " + trials + " trials, " + actual + "ms elapsed, " + df.format(ps) + " trials per second");
}
public static long overhead(int trials) {
Deck d = new Deck();
long ts = System.currentTimeMillis();
for (int i = 0; i < trials; i++) {
if ((i + 1) % 1000000 == 0) {
System.out.println((System.currentTimeMillis() - ts) + "ms, evaluated " + ((i + 1) / 1000000) + " million hands");
}
d.getCards();
}
ts = System.currentTimeMillis() - ts;
System.out.println("Overhead of " + trials + " trials: " + ts + "ms elapsed");
return ts;
}
public static void main(String[] args) {
int c0, c1 = FastEval.encode(12, 1);
int c2 = FastEval.encode(5, 2);
int c3 = FastEval.encode(0, 3);
int c4 = FastEval.encode(9, 1);
int c5 = FastEval.encode(6, 2);
int c6 = FastEval.encode(6, 4);
int c7 = FastEval.encode(7, 4);
int ret = FastEval.eval7(c1, c2, c3, c4, c5, c6, c7);
System.out.println("ret " + ret);
long overhead = BulkTests.overhead(TRIALS);
BulkTests.runtests(TRIALS, overhead);
}
}