mirror of
https://github.com/querydsl/querydsl.git
synced 2026-07-03 21:07:49 +08:00
added iteration tests
This commit is contained in:
parent
31835ea29d
commit
467ddb5353
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user