package mikera.vectorz.performance;
import com.google.caliper.Runner;
import com.google.caliper.SimpleBenchmark;
import mikera.vectorz.AVector;
import mikera.vectorz.Vector;
import mikera.vectorz.Vectorz;
/**
* Caliper based benchmarks
*
* @author Mike
*/
public class MediumVectorBenchmark extends SimpleBenchmark {
private static final int VECTOR_SIZE=20;
private static final Vector source=new Vector( Vectorz.createUniformRandomVector(1000+VECTOR_SIZE));
public void timeVectorAddition(int runs) {
Vector v=new Vector(Vectorz.createUniformRandomVector(VECTOR_SIZE));
Vector v2=new Vector(Vectorz.createUniformRandomVector(VECTOR_SIZE));
for (int i=0; i<runs; i++) {
v.add(v2);
}
}
public void timeVectorAddProduct(int runs) {
Vector v=new Vector(Vectorz.createUniformRandomVector(VECTOR_SIZE));
Vector v2=new Vector(Vectorz.createUniformRandomVector(VECTOR_SIZE));
Vector v3=new Vector(Vectorz.createUniformRandomVector(VECTOR_SIZE));
for (int i=0; i<runs; i++) {
v.addProduct(v2,v3);
}
}
public Object timeAVectorDotProduct(int runs) {
AVector v=new Vector(Vectorz.createUniformRandomVector(VECTOR_SIZE));
AVector v2=new Vector(Vectorz.createUniformRandomVector(VECTOR_SIZE));
double r=0.0;
for (int i=0; i<runs; i++) {
r+=v.dotProduct(v2);
}
return r;
}
public void timeVectorOffsetAddition(int runs) {
Vector v=new Vector(Vectorz.createUniformRandomVector(VECTOR_SIZE));
for (int i=0; i<runs; i++) {
v.add(source,100);
}
}
public void timeJoinedVectorSet(int runs) {
AVector v=Vectorz.newVector(VECTOR_SIZE/2);
v=v.join(Vectorz.newVector(VECTOR_SIZE-v.length()));
Vector v2=new Vector(Vectorz.createUniformRandomVector(VECTOR_SIZE));
for (int i=0; i<runs; i++) {
v.set(v2);
}
}
public void timeJoinedVectorAddition(int runs) {
AVector v=Vectorz.newVector(VECTOR_SIZE/2);
v=v.join(Vectorz.newVector(VECTOR_SIZE-v.length()));
Vector v2=new Vector(Vectorz.createUniformRandomVector(VECTOR_SIZE));
for (int i=0; i<runs; i++) {
v.add(v2);
}
}
public void timeJoinedVectorAddMultiple(int runs) {
AVector v=Vectorz.newVector(VECTOR_SIZE/2);
v=v.join(Vectorz.newVector(VECTOR_SIZE-v.length()));
Vector v2=new Vector(Vectorz.createUniformRandomVector(VECTOR_SIZE));
for (int i=0; i<runs; i++) {
v.addMultiple(v2,0.5);
}
}
public void timeJoinedVectorAddProduct(int runs) {
AVector v=Vectorz.newVector(VECTOR_SIZE/2);
v=v.join(Vectorz.newVector(VECTOR_SIZE-v.length()));
Vector v2=new Vector(Vectorz.createUniformRandomVector(VECTOR_SIZE));
for (int i=0; i<runs; i++) {
v.addProduct(v2,v2,0.001);
}
}
/**
* @param args
*/
public static void main(String[] args) {
new MediumVectorBenchmark().run();
}
private void run() {
Runner runner=new Runner();
runner.run(new String[] {this.getClass().getCanonicalName()});
}
}