added iteration tests

This commit is contained in:
Timo Westkämper 2010-02-17 16:59:38 +00:00
parent 31835ea29d
commit 467ddb5353
3 changed files with 89 additions and 4 deletions

View File

@ -18,6 +18,11 @@ import com.mysema.query.collections.ColQuery;
*/
public class ColQueryImpl extends AbstractColQuery<ColQueryImpl> implements ColQuery{
public ColQueryImpl() {
super(new DefaultQueryMetadata(), EvaluatorFactory.DEFAULT);
}
public ColQueryImpl(EvaluatorFactory evaluatorFactory) {
super(new DefaultQueryMetadata(), evaluatorFactory);
}

View File

@ -36,6 +36,7 @@ public class EvaluatorFactory {
this.templates = templates;
}
@SuppressWarnings("unchecked")
public <T> Evaluator<T> create(List<? extends Expr<?>> sources, final Expr<T> projection) {
ColQuerySerializer serializer = new ColQuerySerializer(templates);
serializer.handle(projection);
@ -68,12 +69,9 @@ public class EvaluatorFactory {
}
try {
// REPLACE START
final ExpressionEvaluator evaluator = new ExpressionEvaluator(javaSource, projection.getType(), names, types);
// REPLACE END
return new Evaluator<T>(){
@SuppressWarnings("unchecked")
Evaluator<T> rv = new Evaluator<T>(){
@Override
public T evaluate(Object... args) {
try {
@ -94,6 +92,7 @@ public class EvaluatorFactory {
}
};
return rv;
} catch (CompileException e) {
throw new RuntimeException(e.getMessage() + " with source " + javaSource, e);

View File

@ -0,0 +1,81 @@
package com.mysema.query;
import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.junit.Test;
import com.mysema.query.animal.Cat;
import com.mysema.query.animal.QCat;
import com.mysema.query.collections.MiniApi;
import com.mysema.query.collections.impl.EvaluatorFactory;
public class LoadTest {
private QCat cat = QCat.cat;
@Test
public void creation(){
System.out.println("Evaluator creation #1");
for (int i = 0; i < 5; i++){
long s = System.currentTimeMillis();
EvaluatorFactory.DEFAULT.create(Collections.singletonList(cat), cat.name.startsWith("Bob"));
long e = System.currentTimeMillis();
System.out.println(" " + (e-s)+"ms");
}
System.out.println();
System.out.println("Evaluator creation #2");
for (int i = 0; i < 5; i++){
long s = System.currentTimeMillis();
EvaluatorFactory.DEFAULT.create(Collections.singletonList(cat), cat.name.startsWith("Bob" + i));
long e = System.currentTimeMillis();
System.out.println(" " + (e-s)+"ms");
}
System.out.println();
}
@Test
public void test(){
List<Cat> data = new ArrayList<Cat>(5000);
for (int i = 0; i < 1000; i++){
data.addAll(Arrays.asList(
new Cat("Bob" + i),
new Cat("Ruth" + i),
new Cat("Felix" + i),
new Cat("Allen" + i),
new Cat("Mary" + i)
));
}
// #1
System.out.println("Querydsl iteration");
for (int i = 0; i < 5; i++){
long s1 = System.currentTimeMillis();
List<Cat> bobs1 = MiniApi.from(cat, data).where(cat.name.startsWith("Bob")).list(cat);
assertEquals(1000, bobs1.size());
long e1 = System.currentTimeMillis();
System.out.println(" " + (e1-s1)+"ms");
}
System.out.println();
// #2
System.out.println("Normal iteration");
for (int i = 0; i < 5; i++){
long s2 = System.currentTimeMillis();
List<Cat> bobs2 = new ArrayList<Cat>();
for (Cat c : data){
if (c.getName().startsWith("Bob")) bobs2.add(c);
}
assertEquals(1000, bobs2.size());
long e2 = System.currentTimeMillis();
System.out.println(" " + (e2-s2)+"ms");
}
System.out.println();
}
}