Add benchmarks

This commit is contained in:
Alex Birkett 2016-01-19 23:20:12 +01:00 committed by Alex Birkett
parent feb4aab353
commit 6fd9d8f275
1 changed files with 71 additions and 0 deletions

View File

@ -0,0 +1,71 @@
package no.birkett.kiwi;
import java.util.HashMap;
/**
* Created by alex on 27/11/2014.
*/
public class Benchmarks {
public static void testAddingLotsOfConstraints() throws DuplicateConstraintException, UnsatisfiableConstraintException {
Solver solver = new Solver();
final HashMap<String, Variable> variables = new HashMap<String, Variable>();
ConstraintParser.CassowaryVariableResolver variableResolver = new ConstraintParser.CassowaryVariableResolver() {
@Override
public Variable resolveVariable(String variableName) {
Variable variable = null;
if (variables.containsKey(variableName)) {
variable = variables.get(variableName);
} else {
variable = new Variable(variableName);
variables.put(variableName, variable);
}
return variable;
}
@Override
public Expression resolveConstant(String name) {
try {
return new Expression(Double.parseDouble(name));
} catch (NumberFormatException e) {
return null;
}
}
};
solver.addConstraint(ConstraintParser.parseConstraint("variable0 == 100", variableResolver));
for (int i = 1; i < 3000; i++) {
String constraintString = getVariableName(i) + " == 100 + " + getVariableName(i - 1);
Constraint constraint = ConstraintParser.parseConstraint(constraintString, variableResolver);
System.gc();
long timeBefore = System.nanoTime();
solver.addConstraint(constraint);
System.out.println(i + "," + ((System.nanoTime() - timeBefore) / 1000) );
}
}
private static String getVariableName(int number) {
return "getVariable" + number;
}
public static void main(String [ ] args) {
try {
testAddingLotsOfConstraints();
} catch (DuplicateConstraintException e) {
e.printStackTrace();
} catch (UnsatisfiableConstraintException e) {
e.printStackTrace();
}
}
}