package mikera.vectorz.performance;
import mikera.vectorz.AVector;
import mikera.vectorz.Vector;
import mikera.vectorz.Vector3;
public class Comparison {
private static final int ITERATIONS=10000;
private static final int REPEATS=100;
private static final int BURN_IN=20;
public static void main(String[] args) {
double a=benchmark(testA);
System.out.println ("Time per operation for test A: " + a + " ns");
double b=benchmark(testB);
System.out.println ("Time per operation for test B: " + b + " ns");
}
private static final double benchmark(Runnable a) {
// burn-in
for (int i=0; i<BURN_IN; i++) {
a.run();
}
long time=System.nanoTime();
for (int i=0; i<REPEATS; i++) {
a.run();
}
double ns= (System.nanoTime()-time)/(1.0*ITERATIONS*REPEATS);
return ns;
}
public static final Runnable testA = new Runnable() {
public void run() {
Vector3 v=Vector3.of(1,2,3);
Vector3 v2=Vector3.of(1,2,3);
for (int i=0; i<ITERATIONS; i++) {
v.add(v2);
}
}
};
public static final Runnable testB = new Runnable() {
public void run() {
AVector v=Vector.of(1,2,3);
AVector v2=Vector3.of(1,2,3);
for (int i=0; i<ITERATIONS; i++) {
v.addMultiple(v2,2.0);
}
}
};
}