package mikera.vectorz.performance;
import com.google.caliper.Runner;
import com.google.caliper.SimpleBenchmark;
/**
* Test to measure the cost of a never-taken boolean branch in a tight inner loop.
*
* @author Mike
*/
public class BooleanTestBenchmark extends SimpleBenchmark {
int result;
final int SIZE=100;
int[] dat=new int[SIZE];
private int basic(boolean b) {
for (int j=0; j<SIZE-1; j++) {
dat[j]=dat[j+1];
}
return 0;
}
private int withTest(boolean b) {
for (int j=0; j<SIZE-1; j++) {
dat[j]=dat[j+1];
if (b) {
return 1;
}
}
return 0;
}
// about 13ns per iteration
public void timeBasic(int runs) {
for (int i=0; i<runs; i++) {
result=basic(false);
}
}
public void timeWithTest(int runs) {
for (int i=0; i<runs; i++) {
result=withTest(false);
}
}
public static void main(String[] args) {
new BooleanTestBenchmark().run();
}
private void run() {
Runner runner=new Runner();
runner.run(new String[] {this.getClass().getCanonicalName()});
}
}