1 21 package com.db4o.test.performance; 22 23 import com.db4o.*; 24 import com.db4o.config.*; 25 import com.db4o.query.*; 26 import com.db4o.test.*; 27 28 29 public class IndexQueryingIsFast { 30 31 public int _int; 32 33 public String _string; 34 35 public IndexQueryingIsFast() { 36 37 } 38 39 public IndexQueryingIsFast(int i, String str) { 40 _int = i; 41 _string = str; 42 } 43 44 public void configure(){ 45 ObjectClass oc = Db4o.configure().objectClass(this.getClass()); 46 oc.objectField("_int").indexed(true); 47 oc.objectField("_string").indexed(true); 48 } 49 50 public void store(){ 51 Test.deleteAllInstances(this); 52 for (int i = 0; i < 5000; i++) { 53 Test.store(new IndexQueryingIsFast(i, "" + i)); 54 } 55 } 56 57 public void test(){ 58 59 Query q = Test.query(); 60 q.constrain(IndexQueryingIsFast.class); 61 q.descend("_int").constrain(new Integer (3)); 62 check(q); 63 64 q = Test.query(); 65 q.constrain(IndexQueryingIsFast.class); 66 q.descend("_string").constrain("3"); 67 check(q); 68 69 70 } 71 72 private void check(Query q) { 73 long start = System.currentTimeMillis(); 74 ObjectSet objectSet = q.execute(); 75 long stop = System.currentTimeMillis(); 76 Test.ensure(objectSet.size() == 1); 77 IndexQueryingIsFast iqiF = (IndexQueryingIsFast) objectSet.next(); 78 Test.ensure(iqiF._int == 3); 79 long duration = stop - start; 80 long max = Test.isClientServer() ? 250 : 50; 81 Test.ensure(duration < max); 82 if(duration >= max){ 83 System.out.println("Indexed query too slow: " + duration + "ms"); 84 } 85 86 } 87 88 89 90 91 } 92 | Popular Tags |