当前位置: 首页 > 工具软件 > db4o > 使用案例 >

db4o java,db4o Java版性能测试评估

杨选
2023-12-01

public class Testdb4oIndex {

public static class Record {

String strKey;

long   intKey;

};

public static class Assert {

public static void that(boolean condition) {

if (!condition) {

throw new Error("Assertion failed");

}

}

}

static final String FILE = "testindex.yap";

final static int nRecords = 100000;

static public void main(String[] args) {

new File(FILE).delete();

Configuration conf = Db4o.configure();

conf.objectClass(Record.class).objectField("strKey").indexed(true);

conf.objectClass(Record.class).objectField("intKey").indexed(true);

conf.weakReferences(false);

conf.discardFreeSpace(Integer.MAX_VALUE);

conf.automaticShutDown(false);

conf.lockDatabaseFile(false);

ObjectContainer db = Db4o.openFile(FILE);

long start = System.currentTimeMillis();

long key = 1999;

int i;

for (i = 0; i < nRecords; i++) {

Record rec = new Record();

key = (3141592621L*key + 2718281829L) % 1000000007L;

rec.intKey = key;

rec.strKey = Long.toString(key);

db.set(rec);

}

db.commit();

System.out.println("Elapsed time for inserting " + nRecords + " records: "

+ (System.currentTimeMillis() - start) + " milliseconds");

start = System.currentTimeMillis();

key = 1999;

for (i = 0; i < nRecords; i++) {

key = (3141592621L*key + 2718281829L) % 1000000007L;

Query q = db.query();

q.constrain(Record.class);

q.descend("intKey").constrain(new Long(key));

Record rec1 = (Record)q.execute().next();

q = db.query();

q.constrain(Record.class);

q.descend("strKey").constrain(Long.toString(key));

Record rec2 = (Record)q.execute().next();

Assert.that(rec1 != null && rec1 == rec2);

}

System.out.println("Elapsed time for performing " + nRecords*2 + " index searches: "

+ (System.currentTimeMillis() - start) + " milliseconds");

start = System.currentTimeMillis();

Query q = db.query();

q.constrain(Record.class);

ObjectSet objectSet = q.execute();

while(objectSet.hasNext()){

db.delete(objectSet.next());

}

db.commit();

System.out.println("Elapsed time for deleting " + nRecords + " records: "

+ (System.currentTimeMillis() - start) + " milliseconds");

db.close();

}

}

 类似资料: