package mikera.matrixx.performance;
import com.google.caliper.Runner;
import com.google.caliper.SimpleBenchmark;
import mikera.matrixx.Matrix33;
import mikera.vectorz.Vector3;
/**
* Caliper based benchmarks
*
* @author Mike
*/
public class ThreeDBenchmark extends SimpleBenchmark {
public static final int VECTOR_SIZE=3;
public static final Vector3 r=Vector3.of(0,0,0);
public static final Vector3 smallDelta=Vector3.of(0.00001,0.00001,0.00001);
public void timeMatrix33Transform(int runs) {
Vector3 v=new Vector3(1,2,3);
Matrix33 m=new Matrix33(1,2,3,4,5,6,7,8,9);
for (int i=0; i<runs; i++) {
v.add(smallDelta);
r.set(m.transform(v));
}
}
public void timeMatrix33TransformInPlace(int runs) {
Vector3 v=new Vector3(1,2,3);
Vector3 t=new Vector3(1,2,3);
Matrix33 m=new Matrix33(1,2,3,4,5,6,7,8,9);
for (int i=0; i<runs; i++) {
v.add(smallDelta);
t.set(v);
m.transformInPlace(t);
}
r.set(t);
}
public void timeMatrix33Clone(int runs) {
Matrix33 m=new Matrix33(1,2,3,4,5,6,7,8,9);
for (int i=0; i<runs; i++) {
m=m.clone();
}
}
public void timeMatrix33Determinant(int runs) {
Matrix33 m=new Matrix33(1,2,3,4,5,6,7,8,9);
double res=0;
for (int i=0; i<runs; i++) {
m.m00+=0.0000001;
res+=m.determinant();
}
r.set(0,res);
}
/**
* @param args
*/
public static void main(String[] args) {
new ThreeDBenchmark().run();
}
private void run() {
Runner runner=new Runner();
runner.run(new String[] {this.getClass().getCanonicalName()});
}
}