use of gdsc.core.test.TimingResult in project GDSC-SMLM by aherbert.
the class RampedSelectionStrategyTest method speedTest.
private void speedTest(final int size, boolean faster, int runs) {
final long[] sum = RampedSelectionStrategy.createSum(size);
TimingService ts = new TimingService(runs);
ts.execute(new TimingTask() {
public Object getData(int i) {
return sum;
}
public Object run(Object data) {
for (int key = (int) sum[sum.length - 1]; key-- > 0; ) RampedSelectionStrategy.search(sum, key);
return null;
}
public void check(int i, Object result) {
}
public int getSize() {
return 1;
}
public String getName() {
return "search" + size;
}
});
ts.execute(new TimingTask() {
public Object getData(int i) {
return sum[i];
}
public Object run(Object data) {
for (int key = (int) sum[sum.length - 1]; key-- > 0; ) RampedSelectionStrategy.binarySearch(sum, key);
return null;
}
public void check(int i, Object result) {
}
public int getSize() {
return 1;
}
public String getName() {
return "binarySearch" + size;
}
});
int n = ts.repeat();
ts.repeat(n);
ts.report();
TimingResult slow = ts.get((faster) ? ts.getSize() - 2 : ts.getSize() - 1);
TimingResult fast = ts.get((faster) ? ts.getSize() - 1 : ts.getSize() - 2);
Assert.assertTrue(slow.getMin() > fast.getMin());
}
use of gdsc.core.test.TimingResult in project GDSC-SMLM by aherbert.
the class FilterTest method directCompareMultiFilterIsFaster.
@Test
public void directCompareMultiFilterIsFaster() {
RandomGenerator randomGenerator = new Well19937c(System.currentTimeMillis() + System.identityHashCode(this));
final MultiFilter f1 = new MultiFilter(0, 0, 0, 0, 0, 0, 0);
final MultiFilter2 f2 = new MultiFilter2(0, 0, 0, 0, 0, 0, 0);
final double[][][] data = new double[1000][][];
for (int i = data.length; i-- > 0; ) {
data[i] = new double[][] { random(f1.getNumberOfParameters(), randomGenerator), random(f1.getNumberOfParameters(), randomGenerator) };
}
TimingService ts = new TimingService();
ts.execute(new TimingTask() {
public Object getData(int i) {
return new MultiFilter[] { (MultiFilter) f1.create(data[i][0]), (MultiFilter) f1.create(data[i][1]) };
}
public Object run(Object data) {
MultiFilter f1 = ((MultiFilter[]) data)[0];
MultiFilter f2 = ((MultiFilter[]) data)[1];
f1.weakest((Filter) f2);
return null;
}
public void check(int i, Object result) {
}
public int getSize() {
return data.length;
}
public String getName() {
return "MultiFilter";
}
});
ts.execute(new TimingTask() {
public Object getData(int i) {
return new MultiFilter[] { (MultiFilter) f1.create(data[i][0]), (MultiFilter) f1.create(data[i][1]) };
}
public Object run(Object data) {
MultiFilter f1 = ((MultiFilter[]) data)[0];
MultiFilter f2 = ((MultiFilter[]) data)[1];
f1.weakest(f2);
return null;
}
public void check(int i, Object result) {
}
public int getSize() {
return data.length;
}
public String getName() {
return "MultiFilter direct";
}
});
ts.execute(new TimingTask() {
public Object getData(int i) {
return new MultiFilter2[] { (MultiFilter2) f2.create(data[i][0]), (MultiFilter2) f2.create(data[i][1]) };
}
public Object run(Object data) {
MultiFilter2 f1 = ((MultiFilter2[]) data)[0];
MultiFilter2 f2 = ((MultiFilter2[]) data)[1];
f1.weakest((Filter) f2);
return null;
}
public void check(int i, Object result) {
}
public int getSize() {
return data.length;
}
public String getName() {
return "MultiFilter2";
}
});
ts.execute(new TimingTask() {
public Object getData(int i) {
return new MultiFilter2[] { (MultiFilter2) f2.create(data[i][0]), (MultiFilter2) f2.create(data[i][1]) };
}
public Object run(Object data) {
MultiFilter2 f1 = ((MultiFilter2[]) data)[0];
MultiFilter2 f2 = ((MultiFilter2[]) data)[1];
f1.weakest(f2);
return null;
}
public void check(int i, Object result) {
}
public int getSize() {
return data.length;
}
public String getName() {
return "MultiFilter2 direct";
}
});
ts.check();
int size = ts.repeat();
ts.repeat(size);
ts.report();
for (int i = 0; i < ts.getSize(); i += 2) {
TimingResult slow = ts.get(i);
TimingResult fast = ts.get(i + 1);
Assert.assertTrue(slow.getMin() > fast.getMin());
}
}
Aggregations